在java中使用scanner类来平均数字的最大值
我正在使用scanner类将数字平均化。我正在使用一种方法进行平均。如果参数超过20个,我不希望程序运行。我好像没法让它工作。我对java非常陌生,正在努力学习
我很感激能得到的任何帮助。谢谢
import java.util.Scanner;
class programTwo {
public static void main (String[] args) {
Scanner scan = new Scanner(System.in);
double x = 0.00d;
if (args != null) {
System.out.println ("Enter your numbers to be averaged. Remember no more than 20!:");
x = scan.nextInt();
if (x <= 21) {
System.out.println("Please do not add more than 20 numbers");
}
} else {
}
}
public double average(double [] values) {
double average = 0.0;
if ((values != null) && (values.length > 0)) {
for (double value : values) {
average += value;
}
average /= values.length;
}
return average;
}
}
# 1 楼答案
args != null
检查是不必要的。实现所需功能的一种方法是接受数字while
扫描仪有一个下一个数字(scanner.hasNext()
也许)和break
如果到目前为止输入的数量少于20。由于双倍数字的数量未知,因此最好使用ArrayListList<Double> doubles = new ArrayList<Double>();
并在
doubles
上调用add方法doubles.add(x);
然后将其传递给平均arraylist中的值的方法# 2 楼答案
只需运行一个while循环,当遇到20个“args”时中断,或者直到输入一个类似
-1
的中断。然后,如果您使用的是双值,那么应该使用x = scan.nextDouble()
。您也没有将值插入数组的位置。在while循环结束时,可以将x
放入一个双精度数组中然后执行
public double Average
,将数组中的值相加并除以(双倍)# 3 楼答案
下面是一个解决方案(也清理了大量代码),它可以在程序开始后将所有数字放在一行上:
我认为您可能需要使用传递给main的args,因为您使用空检查,所以您希望像这样运行程序:
等等。如果是这样,我们有另一个解决方案: