首页 > 解决方案 > 错误:线程“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)

标签: javaarraysnumberformatexception

解决方案


您可以捕获异常并跳过不良记录。

我还建议您拆分一个或多个空格以防止以空字符串开头

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");
    }
}

推荐阅读