嗨,在我的程序中,我想要显示数组中的平均值、最大值、最小值和模式。到目前为止,只有我的平均值有效,我的min和max方法都=我输入的第一个数字。例如,如果我说我想输入3个数字,我输入了12,15和6。最小值和最大值都会输出12,因为这是第一个输入的数字,这是错误的,所以请帮助我。这是我的代码。
int amount;
System.out.println(" Enter the amount of numbers you would like to enter: ");
amount = scan.nextInt();
int [] arr = new int [amount];
int outcome = 1;
for (int i = 0; i < arr.length; i++){
System.out.println("Enter a number 1 through 50");
outcome = scan.nextInt();
arr [i] = outcome;
}
System.out.println(" ");
System.out.println( " The average is" );
System.out.println(average(arr));
System.out.println(" ");
System.out.println( " The lowest value in the array is " );
System.out.println(min(arr));
System.out.println(" ");
System.out.println( " The largest value in the array is " );
System.out.println(max(arr));
System.out.println(" ");
}
public static double average ( int [] arr) {
double sum = 0;
int value = arr.length;
for ( int i = 0; i < arr.length; i++){
sum += arr [i];
}
sum = sum / value;
return sum;
}
public static int min (int [] arr) {
int shortest = 0;
int smallest = 100;
int length = arr.length;
for ( int i = 0; i < arr.length; i ++ ) {
if ( length < smallest)
shortest += arr[i];
smallest = arr.length;
}
return shortest;
}
public static int max (int [] arr) {
int largest = 0;
int biggest = 0;
int length = arr.length;
for ( int i = 0; i < arr.length; i ++ ) {
if ( length > largest)
biggest += arr[i];
largest = arr.length;
}
return biggest;
}
}
发布于 2018-05-31 07:26:45
这将非常简单。min和max方法都返回12的原因是,您将max和min都设置为arr.length,因此只运行一次就会立即停止for循环。此外,对于这类问题,有更简单的实现。试着按照以下思路做一些事情:
public int getMax(int[] arr)
{
int max = arr[0]; //To have a baseline
for(int i = 1; i < arr.length; i++)
{
if(arr[i] > max)
{
max = arr[i];
}
}
return max;
}
public int getMin(int[] arr)
{
int min = arr[0]; //To have a baseline
for(int i = 1; i < arr.length; i++)
{
if(arr[i] < min)
{
min = arr[i];
}
}
return min;
}
这不仅可读性更好,而且执行起来也更容易。如果您有任何问题,请提出来:-)
https://stackoverflow.com/questions/50614499
复制相似问题