我刚开始学习Java,我现在很困惑。我正在尝试制作一个程序来平均用户输入的任意数量的数字,但我无法弄清楚如何允许用户输入任意数量的数字。现在,代码只允许他们在平均值之前做1个数字。
注意: 我写这个错误的机会很有可能,我这样做是为了看看我目前所知道的
我使用Eclipse
我正在www.thenewboston.org学习
以下是代码:
import java.util.Scanner;
class MainClass {
public static void main(String[] args){
System.out.println("Enter Grades Now");
Scanner input = new Scanner(System.in);
double input2 = input.nextDouble();
System.out.println(average(input2));
}
public static double average(double...numbers){
double total=0;
for(double x:numbers)
total+=x;
return total/numbers.length;
}
}
答案 0 :(得分:3)
您可以使用LinkedList<Double>
和循环让用户输入一定数量的数字。
Scanner input = new Scanner(System.in);
List<Double> allDoubles = new LinkedList<Double>();
do {
System.out.print("Next grade: ");
allDoubles.add(input.nextDouble());
} while (input.hasNextDouble());
System.out.println(average(allDoubles.toArray(new Double[0])));
输入任意数量的值,然后输入一些文本,如"done"
。
答案 1 :(得分:1)
您需要一个循环来接受所有值。存储它们的List
也很有用:
public static void main(String[] args){
System.out.println("Enter Grades Now:");
List<Double> inputs = new ArrayList<Double>();
Scanner input = new Scanner(System.in);
while(input.hasNextDouble()){
inputs.add(input.nextDouble()); //add values to the list
}
}
System.out.println(average(inputs));
}
public static double average(List<Double> numbers){
double total=0;
for(Double x:numbers)
total+=x;
return total/numbers.size();
}
答案 2 :(得分:1)
ArrayList<Double> al = new ArrayList<Double>();
while(input.hasNextDouble){
al.add(input.nextDouble())
System.out.print("Prompt: "); //ask for input here
}
// average the elements in the arraylist
答案 3 :(得分:1)
您可以建议用户输入数字,用空格分隔:
Scanner input = new Scanner(System.in);
String userInput = input.nextline();
// e.g. "12 23 34"
String[] stringArray = userInput.split(" ");
Double[] doubleArray = new Double[stringArray.length];
// converting string array to double array
for (int i = 0; i < stringArray.length; ++) {
doubleArray[i] = Double.parseDouble(stringArray[i]);
}
System.out.println(average(doubleArray));