元の質問
次の小さなコードでは、エラーが発生しています...
import java.io.*;
class test
{
public static void main(String args[]) throws IOException
{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int i;
System.out.println("Enter no of processes ");
int no_of_process=Integer.parseInt(br.readLine());
int process[]=new int[no_of_process];
System.out.println("Enter the values");
for(i=0;i<no_of_process;i++)
process[i]=Integer.parseInt(br.readLine());
for(i=0;i<no_of_process;i++)
System.out.println(process[i]);
}
}
入力:
Enter no of processes
5
Enter the values
1
2
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:470)
at java.lang.Integer.parseInt(Integer.java:499)
at test.main(test.java:17)
Process completed.
私はコードを適切に書いたと思いますし、適切な整数入力も与えられています。明示的な例外処理ステートメントを使用せずに上記のエラーを取り除くにはどうすればよいですか?
さらに質問:
あなたの答えをありがとうみんな...それは働いています。しかし、私の心には1つの新しい質問があります。
コードに次の変更を加えて実行しました。驚いたことに、入力は実行時エラーなしで正しく受け入れられました。
for(i=0;i<no_of_process;i++)
{
System.out.println(Write anything or even keep it blank);
process[i]=Integer.parseInt(br.readLine());
}
for ループの入力ステートメントの前 (または後) に Print ステートメントを 1 つだけ追加することで、プログラムは正しく動作し、入力中に例外がスローされることはありませんでした。
この背後にある理由を説明できますか?
そこから Print ステートメントを削除すると、同じエラーが繰り返されます。この背後にある理由について、私は本当に混乱しています。助けてください。