2015-11-06 33 views
-3

因此,這裏少一個是我的代碼:Java的數量需要在回答

package e7; 
import java.util.Scanner; 
public class Q1 { 

    public static void main(String[] args) 
    { 
     double[] scores = new double[10]; 
     double sum = 0.0D; 
     int count = 0; 

     Scanner sc = new Scanner(System.in); 

     do { 
      System.out.print("Enter a new score (-1 to end): "); 
      scores[count] = sc.nextDouble(); 

      if (scores[count] >= 0.0D) 
       sum += scores[count]; 

     } 

     while (scores[(count++)] >= 0.0D); 

     System.out.println("The total number of scores is: " + count); 

     double average = sum/(count - 1); 
     int numOfAbove = 0; 
     int numOfBelow = 0; 

     for (int i = 0; i < count - 1; i++) { 
      if (scores[i] >= average) 
       numOfAbove++; 
      else 
       numOfBelow++; 
     } 

     System.out.printf("Average is " + "%.2f\n",average); 
     System.out.println("Number of scores above or equal to the average " + numOfAbove); 
     System.out.println("Number of scores below the average " + numOfBelow); 

    } 

    } 

如何讓它顯示計算的分數是否正確?如果我輸入2個數字,然後做-1來結束它不斷說3分數。應該只有兩個。我該如何解決?由於

+0

我做了這個System.out.println(「總分數是:」+(count-1));但它似乎相當貧民窟,所以我認爲這可能是另一種方式 – LeroyJenkins

回答

2
System.out.println("The total number of scores is: " + count); 

你可能想:

System.out.println("The total number of scores is: " + (count - 1)); 
0

你也可以從一個做改變你的循環,而while循環如下,

while (true) { 
    System.out.print("Enter a new score (-1 to end): "); 
    double tempDouble = sc.nextDouble(); 

    if (tempDouble >= 0.0D) 
    scores[count] = tempDouble; 
    sum += scores[count]; 
    count++; 
    else 
    break; 
} 

這樣一來,就好像你的雙輸入是不正確的,它會在用戶輸入-1時跳出while循環。你可能需要爲你的用例調整一下。