目标是创建一个大小为100的数组,让用户输入一组正数,然后在输入-1时退出(或者填充100个点)。之后,打印出读取的输入数、平均值和最高值。我最初是用一个较小的数组来测试我的代码,以获得平均值,现在我意识到array.length不是我想要的,因为我将它切换到100并且不填充100个插槽。我的问题是,如何计算输入到数组中的输入量,而不仅仅是数组的总长度?
import java.util.*;
class Array{
public static void main(String [] args){
Scanner scan = new Scanner(System.in);
int[] array = new int[100];
System.out.println("Enter your number: ");
for(int i = 0; i < 100; i++){
int entry = scan.nextInt();
if(entry == -1){
System.out.println("Goodbye.");
i--;
break;
}else if(entry < -1){
System.out.println("Invalid.");
i--;
}else{
array[i] = entry;
}
}
//prints amount of elements inside array
//System.out.println("There are " + countArray(array) + " numbers in this array.");
//prints average
System.out.println("The average is: " + findAverage(array));
//prints highest val
System.out.println("The highest value is: " + findHigh(array));
}
//public static int countArray(int[] array)
//need help here and then fixing the issue in the average method
public static double findAverage(int [] array){
double sum = 0;
for(int i = 0; i < array.length; i++){
sum += array[i];
}
double average = (sum/array.length);
return average;
}
public static int findHigh(int[]array){
int max = array[0];
for(int i = 1; i < array.length; i++){
if (array[i] > max){
max = array[i];
}
}
return max;
}
}
3条答案
按热度按时间o75abkj41#
您可以保留一个变量来计算输入的数量。
agxfikkp2#
没有方法可以用于此操作,因为您自己没有指定元素的所有索引都被设置为0。您可以做的是,只要有一个变量,每次向数组中添加一个元素时,该变量就增加一个。在您的情况下,可以使用i来实现这一点(在for头之外声明它,以便以后可以访问它)。
zengzsys3#
通常,要在大小合适的数组中输入一些值,首先会提示输入大小。
这也允许输入负值,因为它不需要一个值来表示输入结束。这只是一个例子,但这种技术可以很容易地适应您的要求,因为如果您愿意,您仍然可以忽略负数。