如何使特定字符串输入成为 while 循环的条件,并在每次输入输入时进行检查

How to make a particular string input the condition for while loop and it checks everytime an input is entered

提问人:Sotei 提问时间:9/22/2022 最后编辑:Sotei 更新时间:9/22/2022 访问量:377

问:

如果这些条件都不满足或输出已打印,则它将返回要求用户输入新值。 如果在输入阶段的任何时候,用户输入“退出”一词,则结束程序。

让我的程序遵循这些条件是我解决问题之前唯一缺少的部分。 一开始的 while 循环,条件是只要输入字符串输入“Quit”,它就会结束,这是我一直在尝试做的事情,但一直失败。

我们的课程刚刚开始,我们甚至还没有涵盖方法或 OOP。我们的教授只教我们扫描仪 system.in 和 .next(datatype) 方法,所以我认为扫描仪类的其他方法一直在我脑海中浮现。

这是我程序的输入阶段:

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
        System.out.println("Please give three numbers");
        int num1 = sc.nextInt();
        int num2 = sc.nextInt();
        int num3 = sc.nextInt();
        System.out.println("Choose the temperature unit of the three numbers.");
        System.out.println("Enter 1 for Celsius, 2 for Fahrenheit and 3 for Kelvin");
        int tempUnit = sc.nextInt();
        switch (tempUnit) {
            case (1) -> System.out.println("Celsius was chosen.");
            case (2) -> System.out.println("Fahrenheit was chosen.");
            case (3) -> System.out.println("Kelvin was chosen.");
        }
        System.out.println("Choose the temperature unit you want to convert it into.");
        System.out.println("Enter 1 for Celsius, 2 for Fahrenheit and 3 for Kelvin");
        int chosenTemp = sc.nextInt();
        switch (chosenTemp) {
            case (1) -> System.out.println("Celsius was chosen.");
            case (2) -> System.out.println("Fahrenheit was chosen.");
            case (3) -> System.out.println("Kelvin was chosen.");
        } 

我试图用你们告诉我的东西想出一些东西,这就是我想出的?

if (!sc.hasNextInt()) {
        String end = sc.nextLine();
        if (end.equalsIgnoreCase("Quit")) {
            System.exit(0);

它奏效了,但我觉得这不是你们告诉我的。 你能给我举个例子吗? 我读到这不是您设置“退出”条件的方式,谁能教我怎么做?

Java 循环 java.util.scanner 用户输入

评论

0赞 001 9/22/2022
您可以使用 sc.hasNextInt() 查看是否有等待读取的数字。如果没有,请将其作为用途阅读,并将其与 进行比较。Stringsc.next()"Quit"
0赞 Joop Eggen 9/22/2022
“返回询问(再次)”是一个循环,类似于 while/do-while。“退出”将退出该循环。在您必须检查是否输入了非数字内容(例如“退出”)之前。这可以用 来检查。请写 .你不太可能进入一家写作惯例如此的公司。nextInthasNextInt()case 1 -> ...
0赞 Computable 9/22/2022
If at any point during the input stage the user enters the word "Quit" - 你没有为此做好准备,你的提示甚至没有建议这样做。提示是否由分配指定?考虑您将如何接收字符串 。Quit
0赞 Sotei 9/22/2022
这是我的提示。我不知道如何设置退出条件,所以我跳过了它,只做了其他所有事情。

答:

0赞 Sawan Meshram 9/22/2022 #1

我想你想实现以下目标

Scanner sc = new Scanner(System.in);
while(true) {
    System.out.println("Please give three numbers");
    int num1 = sc.nextInt();
    int num2 = sc.nextInt();
    int num3 = sc.nextInt();
    System.out.println("Choose the temperature unit of the three numbers.");
    System.out.println("Enter 1 for Celsius, 2 for Fahrenheit, 3 for Kelvin and 4 for Quit");

    int tempUnit = sc.nextInt();
    switch (tempUnit) {
    case 1 : 
        System.out.println("Celsius was chosen.");
        break;
    case 2 : 
        System.out.println("Fahrenheit was chosen.");
        break;
    case 3 : 
        System.out.println("Kelvin was chosen.");
        break;
    case 4 : 
        System.out.println("Quit");
        System.exit(0);
    }
}