我得到此代码的数字格式异常

时间:2015-12-28 07:11:07

标签: java arrays exception numberformatexception

我收到此异常

  

线程“main”中的异常java.lang.NumberFormatException:null
              在java.lang.Integer.parseInt(Integer.java:542)
              在java.lang.Integer.parseInt(Integer.java:615)
              在Test.main(Main.java:10)

代码:

private void manageConnectedSocket(BluetoothSocket socket) {
    Log.i(TAG, "Hurray!! I am here");
    //
    if (acceptThread != null) {
        acceptThread.cancel();
        acceptThread = null;
    }
    //
    if (acceptThread == null) {
        acceptThread = new AcceptThread();
        acceptThread.start();
    }
}

它在eclipse上正常运行,但在其他IDE上,它正在提供此异常。

2 个答案:

答案 0 :(得分:0)

问题在于此行a[i]=Integer.parseInt(br.readLine());

在执行上述操作之前,您应该检查br.readLine() != null

您正在尝试将null解析为整数。这就是错误所暗示的。

修改
根据{{​​3}},如果已到达流的末尾,则readLine()会返回null

您的代码应如下所示:

import java.util.*;
import java.io.*;
class Test {
    public static void main (String[] args) throws IOException
    {
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        int a[]=new int[10],flag=1;
        System.out.println("Enter The Nos.");
        for(int i=0;i<=9;i++) {
            String num = br.readLine();
            if(num != null) {
                a[i]=Integer.parseInt(num);
            } else {
                //a[i] = 0;   // You might want to assign a[i] to some integer if the input number is null
            }
        }
        int i=0;
        do{

            if(a[i]!=42)
                System.out.println(a[i]);
            else{ flag=0;break; }
            i++;
        }while(flag==1 && i < 10);
    }
}

答案 1 :(得分:0)

异常是描述性的,您尝试将null解析为int。在调用parseInt()之前执行null检查。检查br的null函数

是很好的
print table
         Email    Purchaser  order_id  amount
0  a@gmail.com  a@gmail.com         1       5
1  b@gmail.com          NaN       NaN     NaN
2  c@gmail.com  c@gmail.com         2      10
3  c@gmail.com  c@gmail.com         3       5

table['Purchaser'] = table['Purchaser'].replace(np.nan, 'dummy')
print table
         Email    Purchaser  order_id  amount
0  a@gmail.com  a@gmail.com         1       5
1  b@gmail.com        dummy       NaN     NaN
2  c@gmail.com  c@gmail.com         2      10
3  c@gmail.com  c@gmail.com         3       5

table1 = table.groupby(['Email', 'Purchaser']).agg({'amount': np.sum, 'order_id': 'count'})
print table1
                         order_id  amount
Email       Purchaser                    
a@gmail.com a@gmail.com         1       5
b@gmail.com dummy               0     NaN
c@gmail.com c@gmail.com         2      15

table1 = table1.reset_index()
table1['Purchaser'] = table1['Purchaser'].replace('dummy', np.nan)
print table1
         Email    Purchaser  order_id  amount
0  a@gmail.com  a@gmail.com         1       5
1  b@gmail.com          NaN         0     NaN
2  c@gmail.com  c@gmail.com         2      15

然后解析它。

您的输入可能包含空格,因此java无法将其转换为数字,例如&#34; 4 5&#34;为此,您可以用&#34;&#34;替换所有空格。然后尝试将其转换为数字。

br.readLine() != null

您的代码如下所示,

br.readLine().replaceAll("\\s+", "");