如何解决如何读取用户输入到具有设定大小的数组中的输入量?
目标是制作一个大小为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;
}
}
解决方法
没有方法可以使用,因为所有未指定元素的索引都将自己设置为0。相反,您可以做的只是添加一个变量,每次添加元素时将其加1到您的数组。在您的情况下,您可以为此使用i(在for标头之外声明它,以便以后可以访问它)。
,您可以保留一个变量以计算输入数量。
int inputCount = 0;
for (int i = 0; i < 100; i++) {
int entry = scan.nextInt();
inputCount++;
if (entry == -1) {
System.out.println("Goodbye.");
i--;
break;
} else if (entry < -1) {
System.out.println("Invalid.");
i--;
} else {
array[i] = entry;
}
}
,
通常,要在适当大小的数组中输入一些值,请先提示输入大小。
Scanner input = new Scanner(System.in);
System.out.print("Please enter number of values: ");
int size = input.nextInt();
int[] values = new int[size];
System.out.println("Start entering " + size + " values);
for (int i = 0; i < size; i++) {
values[i] = input.nextInt();
}
// now do something with the array.
这也允许输入负值,因为它不需要一个值来表示输入结束。只是一个例子,但是这种技术可以轻松地适应您的要求,因为您仍然可以忽略负数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。