4

我刚开始学习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;
    }

}
4

4 回答 4

3

您可以使用 a LinkedList<Double>and a 循环让用户输入人工数量的数字。

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".

于 2013-03-09T19:50:43.530 回答
1

您需要一个循环来接收所有值。AList存储它们也很有帮助:

  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();
}
于 2013-03-09T19:50:50.167 回答
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
于 2013-03-09T19:51:03.117 回答
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));
于 2013-03-09T19:53:17.190 回答