java - 错误:线程“main”中的异常 java.lang.NumberFormatException:对于输入字符串:“”
问题描述
我正在尝试将数字输入为 astring
并将它们拆分并存储在一个string
数组中,然后将它们作为整数存储在int
数组中。我已经尝试了很多东西,.trim()
或者scanner.skip()
但无法在这里解决这个问题。
我的输入:
4
1 2 2 2
public static void main(String []args) throws IOException{
Scanner scanner = new Scanner(System.in);
int arCount = scanner.nextInt();
int[] ar = new int[arCount];
String[] arItems = scanner.nextLine().split(" ");
for (int i = 0; i < arCount; i++) {
int arItem = Integer.parseInt(arItems[i].trim());
ar[i] = arItem;
}
scanner.close();
}
收到的错误是:
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:592)
at java.lang.Integer.parseInt(Integer.java:615)
at Hello.main(Hello.java:32)
解决方案
您可以捕获异常并跳过不良记录。
我还建议您拆分一个或多个空格以防止以空字符串开头
Scanner scanner = new Scanner(System.in);
int arCount = scanner.nextInt();
scanner.nextLine();
int[] ar = new int[arCount];
String[] arItems = scanner.nextLine().split("\\s+");
for (int i = 0; i < arCount; i++) {
try {
ar[i] = Integer.parseInt(arItems[i].trim());
} catch (NumberFormatException e) {
System.err.println(arItems[i] + " is not an int");
}
}
推荐阅读
- spring - 使用 Hibernate seesion.delete() 的更好方法是按 ID 删除还是按对象删除?
- php - 使用 PHP 5.3.8 进行调试
- excel - Excel VBA 代码无法在某些计算机上运行
- python - MQTT Python-Client 异常断开连接
- r - 使用调用函数B的R的函数A如何定义B的参数
- ios - Swift 4:UISearchBar 和 NavigationBar
- zipkin - 使用tomcat服务器而不使用配置文件的zipkin勇敢实现
- jquery - 如何根据子div值隐藏对应的父div
- java - GWT、play、vaadin、grails、wicket、vert.x 有什么区别?
- mysql - mysql like query 拉取结果很慢