当前位置: 首页 > 知识库问答 >
问题:

退出程序的输入循环怎么做

郭通
2023-03-14

“输入一个单词或者按‘Q’退出”但是我不知道怎么做。我觉得有点困惑。

这是我第一次用Java编码,我还在学习。


public class RemSpecialChar {
    public static void main(String[] args) {
        try (Scanner scan = new Scanner(System.in)) {

            String stringArray = "";
            
            do {
                System.out.print("Enter a word or 'Q' to quit: ");
                String str = scan.nextLine();
                for (int i = 0; i < str.length(); i++) {
                    if (str.charAt(i) > 64 && str.charAt(i) <= 122) { //returns true if both conditions returns true    
                        //adding characters into empty string
                        stringArray = stringArray + str.charAt(i);
                    }
                    System.out.print("Input string without special characters: " + stringArray); //string results
                }
            }
            while (stringArray != "q" || stringArray != "Q");
        }
    }
}


THIS IS THE SAMPLE OUTPUT:
Enter a word or 'Q' to quit: Black?204123,.Scoop (input)
Input string without special characters: BlackScoop (output)
Enter a word or 'Q' to quit: q (input)
(end program)


terminal output:
Enter a word or 'Q' to quit: q
Enter a word or 'Q' to quit: q
Enter a word or 'Q' to quit: q
Enter a word or 'Q' to quit: q
Enter a word or 'Q' to quit: q
Enter a word or 'Q' to quit: q
Enter a word or 'Q' to quit: q
Enter a word or 'Q' to quit:

共有3个答案

伏砚
2023-03-14

看看这行:

while (stringArray != "q" || stringArray != "Q")

stringArray不是“q”或不是“q”时,此操作会重复。换句话说,它必须同时为“q”“q”才能退出,这是不可能的。

您真正想要的是使用

while (stringArray != "q" && stringArray != "Q")

在不是"q"也不是"Q"时重复。

虽然这是你问题的根源,但我仍然建议你使用你已经接受的答案。

编辑:如前所述,您也不应该用< code>==或< code >来比较字符串!=。

java prettyprint-override">while (!"q".equals(stringArray) && !"Q".equals(stringArray))

你也可以像在其他答案中那样使用equalsIgnoreCase。我只是想指出使用| |而不是的逻辑中的主要缺陷

夏知
2023-03-14

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        try (Scanner scan = new Scanner(System.in)) {
            while (true) {
                String inputdata = scan.nextLine();

                if (inputdata.length() == 1 && (inputdata.charAt(0) == 'Q' || inputdata.charAt(0) == 'q')) {
                    break;
                }

                String stringArray = "";
                for (int i = 0; i < inputdata.length(); i++) {
                    if (inputdata.charAt(i) > 64 && inputdata.charAt(i) <= 122) { // returns true if both conditions
                                                                                  // returns true
                        // adding characters into empty string
                        stringArray = stringArray + inputdata.charAt(i);
                    }

                }
                System.out.print("Input string without special characters: " + stringArray);

            }

        }
    }
}
姚星腾
2023-03-14

使用while循环读取输入,如果输入为“Q”,则中断循环。

public static void main(String[] args) 
{
    try(Scanner sc = new Scanner(System.in))
    {
        while(true)
        {
            System.out.print("Enter a word or press 'Q' to quit: ");
            String word = sc.nextLine();
            
            if ("q".equalsIgnoreCase(word))
                break;
            
            System.out.println(word);
        }
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }

    System.out.println("Exiting... ");
}
 类似资料:
  • 我正在尝试编写一个程序,允许在无限循环中生成随机数。如果用户按下'c',它将脱离循环。但是循环只在我按下c时开始,它应该在之前开始,当我按下'c'时它应该停止。 另外,我想知道如何才能只使用while循环而不是do-while循环来完成这个程序。当我使用while时,我从开始,然后使用来自input的if语句中断循环,但这也不起作用。内部仍然有两个for循环。 多谢

  • js for循环怎么实现如下输出

  • 我正在尝试创建一个程序,向用户询问指数,然后获取指数并执行操作(e^exponent)。如果用户输入的值不是双精度值,程序会打印“无效输入”,并继续请求指数。但是,我无法让这段代码工作,当我在调试器中键入非双精度值时,它会无限打印“输入指数:无效输入”。

  • 如果输入了非int值,如何创建一个会中断的while循环? 例如,如果用户输入字符串、double或int以外的其他基本类型,循环将退出。

  • 我整晚都在做这个,但是什么也没做出来。我希望我的代码对用户输入的所有数字求和,计算用户输入数字的次数。然后计算平均值。然后找到最大值和最小值,很容易就对了。是的,如果我被允许使用数组,但这是为了复习,我讨厌while循环。 这是我的密码。 以下是输出结果: 请输入一个整数:3您的数字之和为:3.0输入的值数为:1 请输入一个整数:2数字之和为:5.0输入的数值个数为:2 请输入一个整数:1数字之和

  • 如果您能帮助我完成Java类的任务,我将不胜感激。问题提示如下: 编写一个程序来读取非负整数列表并显示最大整数、最小整数和所有整数的平均值。用户通过输入一个不用于查找最大值、最小值和平均值的负哨兵值来指示输入的结束。平均值应该是双精度类型的值,以便用小数部分计算。 我在代码中遇到的问题是,运行时,循环不会完成,除非输入的第一个值为负值,在这种情况下它返回: 输入的最大数字是:0输入的最小数字是:0