2013-03-09 65 views
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; 
    } 

} 

回答

3

您可以使用LinkedList<Double>和循环,让用户输入的Amoun人工数字。

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

你需要一个循环来获得所有的值。一个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(); 
} 
+0

我试过,但该“的System.out.println(平均(inputs.toArray()));”部分平均说:“缺少方法的返回类型”,对于输入:输入无法解析。这可能很明显,如何解决,但像我说的我是一个新手:D – Wolverine1621 2013-03-09 20:09:07

+0

做了一个编辑。试试吧,这样看起来更简单。 – Sednus 2013-03-09 20:15:42

+0

我想我失去了一些东西,它仍然没有为我工作:/我可能不得不放弃一段时间,直到我明白事情更好 – Wolverine1621 2013-03-09 20:22:27

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 
+0

如果他们不输入一个双重,它退出 – Mike 2013-03-09 19:53:03

+0

我可以使输入提示更好,但。 – Mike 2013-03-09 19:54:53

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));