如何让这段代码停在非数字的东西上?

时间:2014-01-16 04:32:36

标签: java java.util.scanner minimum

我正在尝试创建一个程序,提示用户输入数字,直到输入非数字值。此时,它结束并打印:计数,总和,平均值,最小值和最大值。我得到一个“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);    
   }
}

2 个答案:

答案 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)时出现异常,则会出现非数字值。