.equals()方法似乎不适合我

时间:2019-01-27 22:40:15

标签: java string

我需要打印“输入数字或X以关闭”并进行用户输入。我需要它来检测该输入是字符串还是整数。我将输入设为字符串,然后解析int,但.equals()方法未检测到它是否为X,如果我输入其他任何字母或字符串,它将终止它,我希望它仅以X结尾或x。

我的朋友告诉我尝试使用switch语句,但是idk id如何做到这一点,我尝试解析字符串。

while(input.hasNextInt()){
           String x = input.nextLine();
           if ("x".equals("Exit")||x.equals("x")) {
               System.out.print("Exiting...");
               System.exit(0);
           }
           numbers.add(Integer.parseInt(x));
           Collections.sort(numbers);
           for (int i=0; i < numbers.size(); i++) {
               System.out.print(numbers.get(i)+" ");
           }

输入数字或X关闭:4 4 平均:4.0,中位数:4,这是您的最小值:4,这是您的最大值:4

输入数字:q

^当我输入其他字母或字符串时终止

5 个答案:

答案 0 :(得分:0)

罪魁祸首是

while(input.hasNextInt())

如果输入x或其他任何非数字,则hasNextInt返回false,并且while循环结束。

答案 1 :(得分:0)

您的代码不接受字符串输入,因为您的while条件仅接受int值。

    while(input.hasNextInt())

您可以尝试将其更改为-

    while(input.hasNext()){

    }

如果条件如下,也可以尝试更改-

    if(x.equalsIgnoreCase("x")){
            // your code here
    }

如果您还想退出程序以“退出”,则可以将其添加到if条件,如-

    if(x.equalsIgnoreCase("x") || x.equalsIgnoreCase("exit"){
           // your code here
    }

答案 2 :(得分:0)

while(input.hasNext()){
           String x = input.nextLine();
           if (x.equalsIgnoreCase("Exit")||x.equalsIgnoreCase("x")) {
               System.out.print("Exiting...");
               System.exit(0);
           }
           numbers.add(Integer.parseInt(x));
           Collections.sort(numbers);
           for (int i=0; i < numbers.size(); i++) {
               System.out.print(numbers.get(i)+" ");
           }

让它工作,这是while循环

答案 3 :(得分:0)

equals方法不是问题。您应该使用input.hasNext()而不是input.hasNextInt()

检查字符串(而不是变量)是否相等也是一个好主意。 试试这个

try (Scanner input = new Scanner(System.in)) {
        List<Integer> numbers = new ArrayList<Integer>();
        while (input.hasNext()) {
            String x = input.nextLine();
            if ("Exit".equals(x) || "x".equals(x)) {
                System.out.print("Exiting...");
                input.close();
                System.exit(0);
            }
            numbers.add(Integer.parseInt(x));
            Collections.sort(numbers);
            for (int i = 0; i < numbers.size(); i++) {
                System.out.print(numbers.get(i) + " ");
            }
        }
    }

提示:如果使用Java 7或更高版本,请始终在try块中初始化资源,如果知道何时可以显式关闭它。

答案 4 :(得分:0)

我使您的代码也能正常工作:

methods to compare

然后在运行应用程序的情况下在终端中输入以下结果:

  1. 第一种情况,输入11 22 33并退出:

    11 22 33 退出=>
    11 22 33退出...

  2. 仅包含x而没有其他内容的第二种情况:

    x =>
    正在退出...

  3. 具有错误的“ aa”值:

    11 22 a 下一个值:不是数字。没有添加到列表中 33 x =>

    11 22 33退出...