我需要打印“输入数字或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
^当我输入其他字母或字符串时终止
答案 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
然后在运行应用程序的情况下在终端中输入以下结果:
第一种情况,输入11 22 33并退出:
11
22
33
退出=>
11 22 33退出...
仅包含x而没有其他内容的第二种情况:
x =>
正在退出...
具有错误的“ aa”值:
11 22 a 下一个值:不是数字。没有添加到列表中 33 x =>
11 22 33退出...