Babz
Babz

Reputation: 75

simple java multiplication game

I'm making a simple multiplication game, but when the user enters a correct answer, it still runs the else statement. I know it's a simple solution but I just can't figure it out. Can someone give me a hand?

public static void partB() {
    System.out.println("Exercise 1B");
    int count = 0;
    String active = "true";
    int correct = 0;
    while (active == "true") {
        Random r = new Random();
        int Low = 10; //inclusive
        int High = 21; //not inclusive
        int Result = r.nextInt(High - Low) + Low;
        Random r2 = new Random();
        int Result2 = r2.nextInt(High - Low) + Low;
        int Total = Result * Result2;
        Scanner input = new Scanner(System.in);
        System.out.println(Result + "*" + Result2 + "=?");
        String guess = new String(input.nextLine());
        String tostrng = String.valueOf(Total);

        if (guess.equals (tostrng)) {
            correct += 1;
            count+=1;
            System.out.println("Correct answer. Score: " + correct + "(" + count + ")"); 
        }
        if (guess.equals("q")) {
            System.out.println("Good Bye!");
            active = "false";
            //return;
        }
        else {
            count +=1;
            System.out.println("Incorrect answer. Score:" + correct + "(" + count + ")");
        }
    }
}

Upvotes: 0

Views: 623

Answers (3)

Babz
Babz

Reputation: 75

Fixed it like this! thanks for the help though guys.

if (guess.equals("q")) {
    System.out.println("Good Bye!");

    return;
}

if (guess.equals(tostrng)) {
    correct += 1;
    count += 1;

    System.out.println("Correct answer. Score: " + correct + "(" + count + ")");
} else {
    count += 1;

    System.out.println("Incorrect answer. Score:" + correct + "(" + count + ")");
}

Upvotes: 0

Mesar ali
Mesar ali

Reputation: 1898

Your else with wrong if

public static void partB() {
    System.out.println("Exercise 1B");
    int count = 0;
    String active = "true";
    int correct = 0;
    while (active == "true") {
        Random r = new Random();
        int Low = 10; //inclusive
        int High = 21; //not inclusive
        int Result = r.nextInt(High - Low) + Low;
        Random r2 = new Random();
        int Result2 = r2.nextInt(High - Low) + Low;
        int Total = Result * Result2;
        Scanner input = new Scanner(System.in);
        System.out.println(Result + "*" + Result2 + "=?");
        String guess = new String(input.nextLine());
        String tostrng = String.valueOf(Total);

        if (guess.equals (tostrng)) {
            correct += 1;
            count+=1;
            System.out.println("Correct answer. Score: " + correct + "(" + count + ")");
        }
       else {
            count +=1;
            System.out.println("Incorrect answer. Score:" + correct + "(" + count + ")");
        }
        if (guess.equals("q")) {
            System.out.println("Good Bye!");
            active = "false";
            //return;
        }
    }
}

Upvotes: 1

Varun Srivastawa
Varun Srivastawa

Reputation: 72

Make type of active variable as boolean i.e. boolean active=true; and for comparing string values always use .equals() method.

Upvotes: 0

Related Questions