簡體   English   中英

從System.in中讀取時出現NumberFormatException

[英]NumberFormatException when reading from System.in

我在運行代碼時遇到這些異常

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的新手,無法解決此錯誤。 請幫忙 ! 這是我的代碼->

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

我正在使用以下輸入示例來運行程序。 非常感謝您的幫助!

7 3
1
51
966369
7
9
999996
11

您的程序有太多錯誤:

您可以如下更改代碼

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)您不需要同時使用Scanner和BufferedReader。 您的解決方案可以使用其中任何一種。

3)最好在使用Integer.parseInt(String str);時使用try-catch Integer.parseInt(String str);

如果要使用BufferedReader,則需要將代碼更改為

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM