我的数组将sentinel值作为数组元素接收,然后终止

时间:2013-09-11 17:10:11

标签: java arrays sentinel

我正在编写一个程序,它接受用户输入并产生最小值。 在10个输入之后,用户可以输入负数作为哨兵以退出循环。 问题是这是有效的,但由于某种原因,循环将sentinel值作为数组元素。谁能告诉我什么是错的?

public class java {

   public static void main(String[] args) {
   {

      double[] a=new double[10];
      Scanner arr=new Scanner(System.in);

      System.out.println("Please enter values");

      int size = 0;

      int x = 0;

      while ( x >= 0 )
      {
         System.out.println("Enter next value");    
         x = arr.nextInt();

         a[size]=x;
         size++;                   
      }

      System.out.println( "Minimum Value" );

      System.out.println((min(a)));
   }
}

public static double min( double[] arr )
{
   double minimum= arr[0];
   for (int i=1; i<arr.length; i++)
   {
      if (arr[i] < minimum)
      {
         minimum= arr[i];
      }
   }

   return minimum;
}

1 个答案:

答案 0 :(得分:0)

while ( x >= 0 )
{
    System.out.println("Enter next value"); 
    x = arr.nextInt();

    if(x >= 0) //Add this if block
    {
        a[size]=x;
        size++;         
    }
}

此外,请更改此行:

double[] a=new double[10];

int[] a = new int[10];

最后,当您创建基元int(或double)时,即使在数组中,默认值为0。因此,如果您输入-999作为第一个输入,那么您的数组将如下所示:

{0,0,0,0,0,0,0,0,0,0}