java - !string.equals(string) 结果为假
问题描述
在我的程序的一部分中,我放置了一个 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但我不知道为什么。我该如何解决这个问题?
解决方案
您正在将字符串与 Scanner obj 进行比较。让我们看看扫描器对象在 java 中是如何工作的。
Scanner myObj = new Scanner(System.in);
String myInput = myObj.nextLine(); // Read user input
然后你可以比较你myInput
的字符'f'或'F'
推荐阅读
- laravel - Laravel - 向表迁移添加唯一的数组参数
- java - 以编程方式关闭 Auth0 LockActivity for android
- java - 在 IntelliJ 的单行中自动格式化 Java 记录?
- swift - 什么是`classForCoder()`?
- python - 如何在字典中创建一个新键,其值来自 Python 中字典列表中另一个键列表的值?
- netlogo - 访问代理集中海龟的变量
- html - 试图让 SVGZ 文件在本地显示
- apache - 如何仅使用 .crt 文件在 Apache 上配置 SSL
- javascript - 翻译机器人的反应收集器
- mysql - 从 MySQL 导出 MySQL 数据库,并在创建表时声明约束