获取NumberFormatException:对于输入字符串:“”,同时将输入解析为数组

时间:2015-04-03 21:00:13

标签: java parsing numberformatexception

boolean cloud = false;
//max size of array is 100
int actualLength = 0;
int [] arrayOfInputs = new int[100];
while (!cloud)
{       
    BufferedReader BR = new BufferedReader (new InputStreamReader(System.in));
    //getting the input in string version
    String line = BR.readLine();
    String [ ] splittingThem = line.trim().split(" ");
    actualLength = splittingThem.length;
    //assigning values of array to input
    for (int i = 0; i < actualLength; i++)
    {
        arrayOfInputs[i] = Integer.parseInt(splittingThem[i]);
        if (arrayOfInputs[i]==0)
        {
            cloud = true;
        }
    }

}
//making a new array based off the size of the inputs only
int [] actualArrayOfInputs = new int[actualLength];
for (int i = 0; i < actualLength; i++)
{
        actualArrayOfInputs[i] = arrayOfInputs[i];
}

好的,所以如果输入“1 2 3 4”,我的代码工作正常,但如果我复制并粘贴输入如下:

33

-55

-44

12312

2778

-3

-2

53211

-1

44

0

然后我得到:

Exception in thread "main" java.lang.NumberFormatException: 
For input string: "" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65). 

我不明白为什么当我输入输入时它接受输入但不是在我尝试将它们粘贴时。

我在谷歌上查了这个问题并提出了这个解决方案:NumberFormatException: For input string: "" while parsing,但是我的代码没有那个错误所以我不知道它是什么。

1 个答案:

答案 0 :(得分:0)

您正在阅读空行:

 String line = BR.readLine();
 String [ ] splittingThem = line.trim().split(" ");

问题似乎不在您的代码上,而是在您的输入上。 另一点是您正在从System.in读取,如果您不小心按下额外的输入,则会抛出异常。

看看发生了什么:

  1. 如果该行是“”

  2. 然后line.trim()。split(“”)仍然会有一个元素。 splittingThem.length =&gt; 1

  3. 会让你进入循环并解析“” - &gt;例外!