JAVA:在 Do While 中使用字符串进行决策

use*_*402 3 java do-while

import java.util.Scanner;
import java.util.*;

public class MultipicationTable{

    public static void main(String[] args)
    {
        // Initialising selection variable to 0 
        int selection = 0;
        int MultiValue = 0;
        int UserValue = 0;

        // Initializing the count for loop
        int i;


        // Initializing Random1 and Random2 to get random values
        int Random1;
        int Random2;


        // Creating new Scanner
        Scanner input = new Scanner(System.in);

        do{

        // Menu to select type of multipication
        System.out.println("Please select your option");
        System.out.println("1: Random Multipication table");
        System.out.println("2: Give your own numbers");

        // Getting the input from the above menu
        selection = input.nextInt();

        switch (selection)
        {
            case 1:


                Random1 = (int)(Math.random() * 1000);
                Random2 = (int)(Math.random() * 1000);

                Random1 = Random1/10;

                System.out.println("You Random Value to pultiply is " + Random1);


                System.out.println("How long do you want? 2 - 100 ");


                MultiValue = input.nextInt();


                for (i = 1; i <= MultiValue; i++ )
                {
                    System.out.println("Multipication of " + Random1 + " * " + i + " is: " + Random1 * i);
                }



            case 2:

                System.out.println("What is your Number? ");
                UserValue = input.nextInt();

                System.out.println("How long do you want to multiply? ");
                MultiValue = input.nextInt();

                for (i = 1; i <= MultiValue; i++ )
                {
                    System.out.println("Multipication of " + UserValue + " * " + i + " is: " + UserValue * i);
                }



        }

        System.out.println("Would you like to exit? ");
        String Exit = input.nextLine();

        }while(Exit != 'y');    

    }



}
Run Code Online (Sandbox Code Playgroud)

我认为我的错误出在代码的这一部分。

    System.out.println("Would you like to exit? ");
    String Exit = input.nextLine();

}while(Exit != 'y');    
Run Code Online (Sandbox Code Playgroud)

我收到类似“无法解决退出”的错误消息。我的目标是循环直到用户输入y该问题。

Cod*_*ice 5

首先,whileordo...while循环中的条件在外部作用域内。这意味着do...while在检查条件时,在 的块内声明的任何变量不再在范围内。为了解决这个问题,你需要exitdo...while循环之外声明你的变量:

String Exit = null;

do {
    // do something
    Exit = input.nextLine();
} while (Exit != 'y');
Run Code Online (Sandbox Code Playgroud)

但是,此代码仍将无法编译,因为Exit被声明为 aString但您正在将其与'y'which is a进行比较char。字符串文字总是被双引号包围,字符串也是如此"y"

现在将条件更改为Exit != "y"将编译,但不会按预期运行。您需要String使用该equals()方法比较s 。这意味着条件应该是!Exit.equals("y")。将它放在while条件中应该可以解决循环的问题。

或者,如果您想检查单词“是”或变体,您可以使用while(Exit.charAt(0) != 'y');. 这会检查第一个字符Exit是否为 'y' 字符。

  • 评论最后一段:如果输入是“Yikes!No way!”怎么办?:P (2认同)