我正在尝试创建一个程序,提示用户输入数字,直到输入非数字值。此时,它结束并打印:计数,总和,平均值,最小值和最大值。我得到一个“int无法解除引用”的错误。我很困惑该怎么做。
import java.util.Scanner;
public class Program3
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.println("Enter an floating point number");
int count = 1;
int sum = 0;
int min = 100000;
int max = 1;
int check=0;
while(check==0)
{
int number = input.nextInt();
if(number.hasNextInt())
{
count++;
sum=sum+number;
while(number<min)
min = number;
while(input>max)
max = number;
}
else
{
check=1;
}
}
System.out.println("The count is " +count);
System.out.println("The sum is " +sum);
System.out.println("The average is " +sum/count);
System.out.println("The minimum is " +min);
System.out.println("The maximum is " +max);
System.exit(0);
}
}
答案 0 :(得分:3)
int number = input.nextInt();
如果下一个输入不是int,将给出异常。
一种解决方法是在try catch
块中围绕此声明,并在catch
块中执行non numeric
之后要执行的任何操作。
两个问题的解释:假设你有
1
2
4
一
当遇到4时,它会分配number = 4
,然后检查下一个值是否也是int,
if(number.hasNextInt())
,false
,因为下一个输入为'a'
,因此在if
处理的last encountered int
块不会运行
但是,while
仍然会进入下一次迭代,并尝试从下一个输入中获取int
,即a
因此会出现异常
P.S:我相信你打算写input.hasNextInt()
而不是number.hasNextInt()
答案 1 :(得分:2)
我会尝试从用户那里获取一个字符串,然后将其解析为float。如果在将其解析为float(或double)时出现异常,则会出现非数字值。