-
March 10th, 2013, 02:57 AM
#1
Displaying problem help
import java.util.Random;
import java.util.*;
import java.util.Scanner;
import javax.swing.JOptionPane;
import java.lang.Math;
public class MathIsSuperFun1{
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++)
{
System.out.println("\t\t\t~~~~~~~PROBLEM NUMBER" + (x + 1) + "~~~~~~~~");
assignNum();
getProblem();
checkAnswer();
}
}
//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;
String operationBox = JOptionPane.showInputDialog(null,"1 - Addition\n2 - Subtraction\n3 - Multiplication\n4 - Division ", "Math Is Super Fun", JOptionPane.QUESTION_MESSAGE);
operation = Integer.parseInt(operationBox);
}
//GET NUMBER RANGE BASED ON DIFFICULTY
public int numberRange(){
int range = 0;
switch(choice){
case 1:
range = 100;
break;
case 2:
range = 1000;
break;
case 3:
range = 10000;
break;
case 4:
range = 100000;
break;
case 5:
range = 1000000;
break;
case 6:
range = 10000000;
break;
}
return range;
}
//GET CORRECT RANDOM RESPONSE USING CASE SWITCH BASED ON GETRANDOM METHOD
public void correctResponse(){
String responseCorrect = "";
switch (getRandom(5)){
case 1:
responseCorrect = "Correct. Keep up the good work!";
break;
case 2:
responseCorrect = "Correct. Keep aiming higher!";
break;
case 3:
responseCorrect = "Correct. Well done!";
break;
case 4:
responseCorrect = "Correct. Nice work!";
break;
case 5:
responseCorrect = "Correct. We're almost there!";
break;
}
System.out.println(responseCorrect);
correctAnswers += 1;
}
//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;
}
System.out.println(responseWrong);
System.out.println("The correct answer is:" + correctAnswer);
if(operation == 4)
System.out.println("Correct Remainder: " + correctRemainder);
return responseWrong;
}
//GET PROBLEM BASED ON OPERATION
public void getProblem(){
switch(operation){
case 1:
System.out.println(randomNum1 + "+" + randomNum2 + "= ?\n");
correctAnswer = randomNum1 + randomNum2;
break;
case 2:
System.out.println(randomNum1 + "-" + randomNum2 + "= ?\n");
correctAnswer = randomNum1-randomNum2;
break;
case 3:
System.out.println(randomNum1 + "*" + randomNum2 + "= ?\n");
correctAnswer = randomNum1*randomNum2;
break;
case 4:
System.out.println(randomNum1 + "/" + randomNum2 + "= ?\n");
correctAnswer = randomNum1/randomNum2;
correctRemainder = randomNum1%randomNum2;
break;
}
System.out.print("Answer: ");
userAnswer = input.nextInt();
if(operation == 4){
System.out.print("Remainder: ");
userRemainder = input.nextInt();
}
}
public void checkAnswer(){
if(operation != 4 && userAnswer == correctAnswer){
correctResponse();
}
else if(operation == 4 && userAnswer == correctAnswer && userRemainder == correctRemainder){
correctResponse();
}
else{
wrongResponse();
}
}
public void assignNum()
{
int temporaryNum1 = getRandom(numberRange());
int temporaryNum2 = getRandom(numberRange());
while(operation == 4 && temporaryNum1 == 0){
temporaryNum1 = getRandom(numberRange());
}
while(operation == 4 && temporaryNum2 == 0){
temporaryNum2 = getRandom(numberRange());
}
if(temporaryNum1 > temporaryNum2)
{
randomNum1 = temporaryNum1;
randomNum2 = temporaryNum2;
}
else
{
randomNum1 = temporaryNum2;
randomNum2 = temporaryNum1;
}
}
public int getRandom(int range){
randomNumber = (int)Math.floor((Math.random()*range)+1);
return randomNumber;
}
}
At the getProblem(); method the problem does not display, what is the error? Please help me.
Here is a sample output
~~~~~~~~PROBLEM NUMBER1~~~~~~~
Answer: 0
Correct....
~~~~~~PRBLEM NUMBER2~~~~~~~
........
The problem does not display.
-
March 10th, 2013, 10:32 PM
#2
Re: Displaying problem help
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.
-
March 10th, 2013, 11:11 PM
#3
Re: Displaying problem help
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|