Scanner input = new Scanner(System.in);
int correctAnswers;
int randomNum1;
int randomNum2;
int choice;
int corrrectAnswers, wrongAnswers;
String playerName ="";
int operation;
int userAnswer;
int correctAnswer = 0;
int userRemainder, correctRemainder;
int x = 0;
int temporaryNum1, temporaryNum2;
int range;
int randomNumber;
public static void main (String args[]){
MathIsSuperFun1 lab = new MathIsSuperFun1();
lab.init();
}
public void init(){
getName();
pickDifficulty();
pickOperation();
for(int x = 0; x < 10; x++)
{
//GET PLAYER NAME USING PANE
public static String getName(){
String playerName;
playerName = JOptionPane.showInputDialog(null, "Welcome!\nEnter your name and press OK.", "Math Is Super Fun!", JOptionPane.QUESTION_MESSAGE);
System.out.println("Do your best," + playerName + "!");
return playerName;
}
//PICK DIFFICULTY USING DIALOG
public void pickDifficulty(){
int choice = 0;
String choiceBox;
choiceBox = JOptionPane.showInputDialog(null, "1 - Child's Play\n2 - No Sweat\n3 - Bitter\n4 - Cold-blooded\n5 - Brutal\n6 - Genius", "Math Is Super Fun!", JOptionPane.QUESTION_MESSAGE);
choice = Integer.parseInt(choiceBox);
System.out.println("Difficulty:" + choiceBox);
}
//PICK OPERATIONS
public void pickOperation(){
int operation = 0;
//GET WRONG RANDOM RESPONSE USING CASE SWITCH BASED ON GETRANDOM METHOD
public String wrongResponse(){
String responseWrong = "";
switch (getRandom(5)){
case 1:
responseWrong = "Wrong. Don't give up!";
break;
case 2:
responseWrong = "Wrong. You can do it!";
break;
case 3:
responseWrong = "Wrong. Try again puny human!";
break;
case 4:
responseWrong = "Wrong. You must be really weak at math!";
break;
case 5:
responseWrong = "Wrong. I pity you!";
break;
}
When posting code use [code] Post code inside here [/code] tags.
The issue I notice is that you are creating variables at the class level then you are creating them again within methods. This means that the one at the Method level will get discarded when the method ends so none of the class variables will have any of the information saved to them. I may be wrong but I am not sure why you would want to create class level variables within the main class. I think class level variables are used more in Objects where you have accessors and mutators to assign or get values from private variables.
Code:
import java.util.Scanner;
public class ExampleOfVariableLevels
{
// This is a class level variable
String usrName = "";
// Create scanner object.
Scanner usrInput = new Scanner(System.in);
public static void main(String[] args)
{
ExampleOfVariableLevels ex1 = new ExampleOfVariableLevels();
ex1.init();
}
public void init()
{
example1(); // No value will be stored into usrName since any value is discarded after method ends and not saved into variable
System.out.println("This is value of variable: " + usrName);
usrName = example1(); // Value is returned and saved into usrName at class level.
System.out.println("This is value of variable: " + usrName);
example2(); // Since method did not create same name variable it just saved the data into the variable
System.out.println("This is value of variable now: " + usrName);
}
public String example1()
{
String usrName = "";
System.out.print("Please enter your name: ");
usrName = usrInput.nextLine();
return usrName;
}
public String example2()
{
usrName = "";
System.out.print("Please enter your name: ");
usrName = usrInput.nextLine();
return usrName;
}
}
I hope the example clarifies things a little bit. I am sure someone with more experience can explain why not to do certain things.
Bookmarks