【发布时间】:2021-09-04 11:41:24
【问题描述】:
在我的程序的一部分中,我放置了一个 while 循环来反复询问输入。有一个选项可以输入字母“F”并中断循环。 这是我的程序:
public class Example {
public static void main(String[] args) {
int x = 0;
ArrayList Numbers = new ArrayList();
while (x==0) {
System.out.println("Type your number:");
Scanner s = new Scanner(System.in);
if (s.equals("f") || s.equals("F")) {
x = 1;
}
else if (!s.equals("f") && !s.equals("F")) {
int n = Integer.parseInt(s.next());
Numbers.add(n);
}
}
}
}
当我运行程序时,我输入一些数字,然后输入“F”。我看到了这个错误:
Exception in thread "main" java.lang.NumberFormatException: For input string: "F"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)
at java.base/java.lang.Integer.parseInt(Integer.java:652)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at Example.main(Example.java:13)
我相信字符串“F”可以通过我的else if,但我不知道为什么。我该如何解决这个问题?
【问题讨论】:
-
在代码中,您不会将
String与String进行比较,而是将Scanner与String进行比较。这将始终返回false。 -
@Turing85 将 Scanner 转换为字符串的最佳方法是什么?
-
else后面的条件不需要了,因为你已经检查了字符是否为“f”,所以当它为假时调用else条件。但是,这假设您检查的是 String 而不是 Scanner。
标签: java string if-statement java.util.scanner