2013-03-09 71 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));