原始问题
对于以下小代码,我收到错误消息...
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.
我想我已经正确地编写了代码,并且也给出了正确的整数输入。如何在不使用任何显式异常处理语句的情况下摆脱上述错误?
进一步的问题:
谢谢大家的回答......它正在工作。但是我的脑海中出现了一个新问题。
我在代码中尝试了以下修改并执行了它。令我惊讶的是,输入被正确接受,没有任何运行时错误。
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 语句,我的程序可以正常工作,并且在输入时没有抛出异常。
你们能解释一下这背后的原因吗?
同样,如果我从那里删除 Print 语句,则会重复相同的错误。我真的很困惑这背后的原因。请帮忙。