2014-02-21 283 views
0

我正在嘗試做下面的java任務,除了當我把一個數字< 4或> 10打印出「無效的成績! 「你沒有輸入任何數據!」我想要的只是打印「無效等級!」我試圖解決它,但我不能。任何人都可以幫助我嗎?java計算平均值

感謝,

分配: 創建一個程序,詢問考試的結果,並計算成績的平均平均值。等級是4到10之間的浮點數。程序要求等級,直到輸入負數。如果用戶給出的分數不等於4到10之間的一個數字,則文字「無效分數!」將被打印在屏幕上,並且程序要求另一個分數。最後,程序在屏幕上打印輸入等級的數量和平均值,如示例打印中所示。如果沒有輸入等級,則通知「您沒有輸入任何等級」是屏幕上唯一打印的內容。

提示:雙類型變量將用於存儲平均值。

程序寫入名爲Average的類。

示例輸出

程序計算輸入等級的平均值。 用一個負整數結束。前一秒,如果

Input a grade (4-10): 5 
Input a grade (4-10): 6,5 
Input a grade (4-10): 7,5 
Input a grade (4-10): 7 
Input a grade (4-10): 0 
Invalid grade! 
Input a grade (4-10): -4 

4 grades inputted. 

Average of the grades: 6.5 

代碼

import java.util.Scanner; 
public class apples { 

    public static void main(String[] args) { 

     int inputNumber=0; 
     int sum;   
     int count;   
     double average;  



     sum = 0; 
     count = 0; 


     Scanner reader = new Scanner(System.in); 
     System.out.println("Program calculates the average of inputted grades."); 
     System.out.println("Finish with a negative integer."); 
     System.out.print("Input a grade (4-10): "); 
     inputNumber = reader.nextInt(); 


     while (inputNumber > 0 && inputNumber>=4 && inputNumber<=10) { 
     sum += inputNumber; 
     count++;    
     System.out.print("Input a grade (4-10): "); 
     inputNumber = reader.nextInt(); 

     } 

     if (inputNumber<4 || inputNumber>10) { 
      System.out.println("Invalid grade!"); 
     } 

     if (count==0) { 
      System.out.print("You didn't enter any data!"); 
     } 
     else { 
     average = ((double)sum)/count; 
     System.out.println(); 
     System.out.println(count + " grades inputted."); 
     System.out.print("Average of the grades: "+ average); 
     } 

    } 

} 
+0

添加一個'返回;'入'if'。 –

回答

0

是的,if - else將在這裏幫助,但你把它放在哪裏也很重要。

while (inputNumber > 0) { 
     if (inputNumber<4 || inputNumber>10) { 
      System.out.println("Invalid grade!"); 
     } else { 
      sum += inputNumber; 
      count++; 
     } 
     System.out.print("Input a grade (4-10): "); 
     inputNumber = reader.nextInt(); 
    } 
+0

Thanks Dan,我根據你的建議編輯了我的代碼,但輸出結果不一樣,當我輸入0時,它告訴我「你沒有輸入任何數據!我想要的是出成爲「你沒有輸入任何數據!」,並繼續要求更多的成績。再次感謝你。 – user3314727

+0

將while條件更改爲'inputNumber> = 0'這將打印「無效成績」,然後提示您換取其他成績。 –

3

把一個別人在,因此,如果第一個是不是隻是做:

if (inputNumber<4 || inputNumber>10) { 
    System.out.println("Invalid grade!"); 
} else if (count==0) { 
    System.out.print("You didn't enter any data!"); 
} 
0

當你與一個完成負整數inputNumber將始終小於4所以

if (inputNumber<4 || inputNumber>10) { 
     System.out.println("Invalid grade!"); 
    } 

總是如此。

將其更改爲以下(稍微容易讀):

do {  
     System.out.print("Input a grade (4-10): "); 
     inputNumber = reader.nextInt(); 
     if (inputNumber<4 || inputNumber>10) { 
     break ; // 
     } 
    sum += inputNumber; 
    count++;    


    }while (count <= 4) { 

    if (count==0) { 
     System.out.print("You didn't enter any data!"); 
    } 
+0

Aha:錯過了最初的要求:「如果用戶給出的分數不是4到10之間的一個數字,則文字」無效分數!「將被打印在屏幕上,程序會要求另一個分數。「所以休息時間應該被繼續替代或者保持循環,並且看到Don Temple的解決方案 – user3336961

+0

Dan的建議有一點:如果你輸入0作爲第一年級,它不會進入循環:改變算法爲do -while'做{ 讀取輸入 如果(負) 斷裂 如果(4-10) 過程總和和計數 別的 消息 }而(一些條件(也許計數<= 4)) 如果( count == 0) ....' – user3336961

0

由於這是一個任務,我寧願給你一個線索,而不是答案..

有親密看看你的while循環 - 它永遠不會被輸入。 這意味着輸入時計數爲0,例如3.在執行時,您正在滿足兩個條件,這意味着兩行都正在打印。您需要修改代碼以確保滿足(或達到)其中一個或其他條件,但不能同時滿足這兩個條件。

-1
import java.util.Scanner; 

public class Average { 
    public static void main(String[] args) { 
     int total = 0; 
     double number_sum = 0, number_entered = 0, avg = 0; 
     Scanner reader = new Scanner(System.in); 
     System.out 
       .print("Program calculates the average of inputted grades. \nFinish with a negative integer.\n\n"); 
     do { 
      System.out.print("Input a grade (4-10): "); 
      number_entered = reader.nextDouble(); 
      if (number_entered <= 10 && number_entered >= 4) { 
       number_sum = number_sum + number_entered; 
       total++; 
      } 
      if (number_entered == 0 || number_entered < 4 
        || number_entered > 10) { 

       System.out.print("Invalid grade!"); 
       System.out.print("\nInput a grade (4-10): "); 
       number_entered = reader.nextDouble(); 
      } 
      if (number_entered < 0) { 
       if (total == 0) { 
        System.out.print("You did not input any grades."); 
       } else { 
        avg = number_sum/total; 
        System.out.print(total + " grades inputted.\n"); 
        System.out.print("Average of the grades: " + avg); 
       } 
      } 
     } while (number_entered > 0); 
    } 
} 
+0

1)請不要只給人們代碼,給他們指點。 2)請格式化您的代碼。 –