我正在编写一个程序,它接受用户输入并产生最小值。 在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;
}
答案 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}