首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从NumberFormatException读取System.in时

从NumberFormatException读取System.in时
EN

Stack Overflow用户
提问于 2015-05-06 12:54:04
回答 1查看 1.7K关注 0票数 2

我在运行代码时得到了这些异常。

代码语言:javascript
复制
Exception in thread "main" java.lang.NumberFormatException: null
    at java.lang.Integer.parseInt(Integer.java:542)
    at java.lang.Integer.parseInt(Integer.java:615)
    at Ideone.main(Main.java:22)

我是java的新手,无法解决这个错误。请帮帮忙!这是我的代码->

代码语言:javascript
复制
import java.util.*;
import java.lang.*;
import java.io.*;


class etest {
    public static void main (String[] args) throws java.lang.Exception{
        int n,k;
        Scanner in = new Scanner(System.in);
        n = in.nextInt();
        k = in.nextInt();
        BufferedReader input = new BufferedReader( new InputStreamReader(System.in));
        //StringTokenizer token = new StringTokenizer(input.readLine());
        int total=0;
        int values[] = new int[n];
        for(int i =0; i<n; i++) {
            values[i] = Integer.parseInt(input.readLine());
            if ((values[i]%k)==0) {
                total++ ;
            }
            input.close();
        }
        System.out.println(total);
    }
}

我正在使用下面的输入示例来运行程序。非常感谢你的帮助!

代码语言:javascript
复制
7 3
1
51
966369
7
9
999996
11
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-06 13:07:10

您的程序有太多错误:

您可以如下所示更改代码

代码语言:javascript
复制
public static void main(String[] args) throws java.lang.Exception {
    int n, k;
    Scanner in = new Scanner(System.in);
    n = in.nextInt();
    k = in.nextInt();
    int total = 0;
    int values[] = new int[n];
    for (int i = 0; i < n; i++) {
        values[i] = in.nextInt();
        if ((values[i] % k) == 0) {
            total++;
        }
    }
    System.out.println(total);
}

1)您不应该关闭BufferedReader,它也会自动关闭输入流。

2)不需要同时使用扫描仪和BufferedReader。您的解决方案可以使用它们中的任何一个。

3)在使用Integer.parseInt(String str);时,最好使用“尝试-捕捉”。

如果您想使用BufferedReader,则需要将代码更改为

代码语言:javascript
复制
public static void main(String[] args) throws java.lang.Exception {
    int n, k;


    BufferedReader input = new BufferedReader( new InputStreamReader(System.in));
    String str[]= input.readLine().split(" ");
    n = Integer.parseInt(str[0]);
    k = Integer.parseInt(str[1]);
    int total = 0;
    int values[] = new int[n];
    for (int i = 0; i < n; i++) {
        values[i]=Integer.parseInt(input.readLine());
        if ((values[i] % k) == 0) {
            total++;
        }
    }
    System.out.println(total);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30077400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档