2014-09-18 82 views
0

該代碼似乎運行良好,但獲得有關計算輸入整數總和的錯誤消息。Java數字總和錯誤

練習的要點是輸入一系列數字,在輸入數值-1之後,計算數字的總和,輸入的數字數量,平均值以及奇數和偶數的數量數字。

我得到的輸出表明程序運行正常,但仍然收到錯誤消息。

隨着輸入1 17 2 18 17 -1應打印"sum: 55" expected:<55> but was: <0>

道歉提前如果我的Java語法是有點不雅。我很新!下面的代碼。

import java.util.Scanner; 

public class LoopsEndingRemembering { 

    public static void main(String[] args) { 

     Scanner reader = new Scanner(System.in); 

     System.out.print("Type numbers: "); 
     int n; 
     double sum = 0.0; 
     int i = 0; 
     double average = 0.0; 
     int odd = 0; 
     int even = 0; 

     while (true) { 
      n = Integer.parseInt(reader.nextLine()); 

      if (n != -1) { 
       System.out.print("Type numbers: "); 
       sum += n; 
       i++; 
       average = sum/i; 
       if (n % 2 == 0) { 
        even++; 
       } else { 
        odd++; 
       } 

      } else { 
       System.out.println("Thank you and see you later!"); 
       System.out.println("The sum is " + sum); 
       System.out.println("How many numbers: " + i); 
       System.out.println("Average: " + average); 
       System.out.println("Even numbers: " + even); 
       System.out.println("Odd numbers: " + odd); 
       break; 
      } 
     } 
    } 
} 
+1

它看起來像鍛鍊希望你打印 「總和:<55>」,但您打印 「總和是55」。 – Jon 2014-09-18 19:34:27

+1

您不需要每次計算平均值。將'average = sum/i;'語句添加到'else'部分 – nem035 2014-09-18 19:34:33

+0

它會說55.0看起來正確! – StackFlowed 2014-09-18 19:34:43

回答

1

您正在打印55.0。看來你正在通過另一個程序測試這個程序,而你無法訪問它的源代碼。

1期

你可能想打印55明確。

相反的:

double sum = 0.0; 

務必:

int sum = 0; 

第2期

使用int超過double。對於average值,投射到double

。然後,而不是這樣的:

average = sum/i; 

做這樣的事情:

average = (double)sum/i; 

3期

而且,它似乎是錯誤消息,希望你打印爲sum: 55

所以更改此設置:

System.out.println("The sum is " + sum); 

要:

System.out.println("sum: " + sum); 
+1

感謝您的支持!非常感激。 – Basho 2014-09-18 19:50:47

+0

@Basho沒問題:) – 2014-09-18 20:53:03