2016-06-24 69 views
-2

因此,我的作業是組織一個程序,提示用戶在一行中用五到十個數字,用空格分隔,計算這些數字的平均值,並顯示數字和他們對用戶的平均水平。用戶輸入和不同方法計算平均值

第一種方法應該不帶任何參數並返回由空格分隔的數字的字符串。

第二種方法應該將String作爲唯一參數並返回一個double(平均值)。

第三種方法應該將一個String和一個double作爲參數,但沒有返回值。


我的問題是我不知道如何計算與打印我的結果不同的方法的平均值。我剛剛學會了方法,所以我仍然試圖找出它們。

這是我到目前爲止,我知道我有錯誤:

import java.util.Scanner; 
public class CalculateAvg { 

    public static void main(String[] args) { 
     String userinput = getuserinput(); 
    } 


    public static String getuserinput() { 
     // Read inputs and change string to double 
     Scanner in = new Scanner(System.in); 
     String userinput; 

     System.out.println("Please enter 5 to 10 numbers seperated by spaces: "); 
     userinput = in.nextLine(); 
     double numbs = Double.parseDouble(userinput); 
     return userinput; 
    } 
    // Problem is here. 
    public static double mySum(String sum, String userinput) { 
     double avg = 0; 
     double count = 0; 

     double value = Double.parseDouble(sum); 
     sum = sum + userinput; 
     count++; 
     avg = sum/count; 

     return avg; 
    } 
}  
+0

'「...我有錯誤。」 - 什麼錯誤?請嘗試提出更完整的問題。 –

+0

avg = sum/count;給我一個錯誤。 –

回答

1

由於這是家庭作業,我不會給你的代碼,而是你指出正確的方向。

首先,請按照說明進行操作。第一種方法應該只是獲得用戶輸入;沒有其他的。所以,不要在那裏做任何事情。無論如何,一旦方法返回,您將無法使用它。

第二種方法應該只有一個參數;那麼不要使用兩個。將用戶輸入發送到該方法並獲得平均值。爲了獲得平均值,您需要輸入的總和和數字。但是你有一個String。因此,您需要將該字符串拆分爲單個數字並將其解析爲數字類型,然後對它們進行求和,然後除以拆分輸入後得到的數量。

我假設第三種方法將採取用戶輸入和計算出來的double,並以乾淨的方式顯示它們。

每項任務應該是獨立的方法,所以它會像這樣的事情:

input = getInput() 
average = getAverage(input) 
displayResults(input, average) 
+0

'String [] result = userinput.split(「」); 雙麻木= Double.parseDouble(userinput);' 我已經添加了字符串拆分和解析爲雙,但我得到一個錯誤: 線程「主」java.lang.NumberFormatException異常:對於輸入字符串:「 5 4" \t在sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043) \t在sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110) \t在java.lang.Double.parseDouble(雙人。 java:538) \t at calculateavg.CalculateAvg.getAverage(CalculateAvg.java:39) \t at calculateavg.CalculateAvg.main(CalculateAvg.java:19) –

+0

@O活着,想想錯誤的含義和用戶輸入是什麼。輸入仍然是空格分隔的數字。結果數組是單個數字,需要解析以加倍並加在一起。因此,您可以添加一個循環並遍歷數組中的每一個,並將解析後的值添加到已初始化爲0的sum變量。然後,您得到總和,並且結果數組的大小就是輸入的數字的數量。 – ChiefTwoPencils

0

如果你希望一個確切的代碼,那麼我不會給你的。

要取5到10個參數我認爲你可以創建一個數組make for for循環(in.nextInt()將得到輸入)並在if語句中的循環內創建一個break語句。

如果語句將檢查停止的位置(將一些不在數組中的數字標記爲參數的結尾)。

當你以int形式獲取它們時,可以使用它。

如果您想將整行讀取爲一行,則將行字符串保存在str(或其他)中。

String [] nums = str.split(「」);

此聲明將使所有數字存儲在String數組中。

要得到數字,請使用for循環和Double.parseDouble(nums [i])。

現在,如果你感到恐慌,以不同的方法做這個東西,那麼就使用全局變量。

我認爲這麼多的幫助可能會完成您的工作。

+0

我會從你的答案中刪除如何實現它的替代方法;他們有要求,他們不包括從具有終止值或使用全局變量的循環中將用戶的單個數字作爲「int」。 – ChiefTwoPencils

+0

所以簡單地使用in.next()來讀取整行作爲輸入,並按照所述的方式嘗試其餘部分。在開始編程恐慌但不是。我們在這裏提供幫助。 –

+0

我不是OP。我只是在提出一個建議,因爲他們可能不會使用這些建議,因爲他們違背了功課的要求。 – ChiefTwoPencils