2014-03-30 66 views
1
import java.util.Scanner; 
public class pointSystem { 

static Scanner scanner = new Scanner(System.in); 

public static void main(String[] args) { 
    int points; 
    int total = 0; 
    final int judges = 5; 

    System.out.println("Give points: "); 
    for(int i=0;i<judges;i++) 
    { 
     System.out.println("Give judge's "+ (i+1) + " points: "); 
     points = scanner.nextInt(); 
    if(points<0 || points>20) { 

      System.out.println("You can only give points between 0-20"); 
      System.out.println("Judge "+ (i+1) + " points: "); 
     points = scanner.nextInt(); 
     } 

     total+=points; 
    } 

    System.out.println("Total points are "+total); 

} 

}想不通,爲什麼我的程序不工作

因此,這完全是一個簡單的程序,它要求用戶輸入點,共有5名法官和然後在最後總結了幾點。但是,只能在0-20之間插入點,如果它超出範圍,它會給出一個錯誤,告訴我們再次輸入並繼續這樣做,直到我們輸入有效的輸入。

現在程序工作得很好,除了一個要點,例如,如果我輸入「22」,它會再次按要求提問,但如果再次輸入「22」,它會通過並跳到下一個判斷。

如何才能讓它繼續詢問,直到我向其提交下一個裁判之前給出有效的輸入?如果您修復我的代碼,請給出一個小解釋。

此外,我應該做一個小的編輯,當它總結了最後的點,它減去最高和最低的分數,總結之間的點。因此,如果積分是「3,5,8,9,20」,它將帶走「3和20」,並且只能總結出「5,8和9」使其成爲22.

+1

使用while循環。這將解決你的問題。 – Helios

+1

將'if'改爲'while',這將起作用。 –

+0

使用for循環沒有簡單的方法嗎?我有點這樣做,以更好地瞭解循環,只是在互聯網上做一些隨機練習,並希望更好地學習循環。 – user3478800

回答

1

在你的代碼中,一個if語句來檢查輸入,但如果你的輸入沒有通過你的程序將接受你的下一個輸入,而不檢查它。

爲了解決這個問題,直到您的輸入有效使用while循環,這樣不進步程序:

while(points<0 || points>20) { 
     System.out.println("You can only give points between 0-20"); 
     System.out.println("Judge "+ (i+1) + " points: "); 
     points = scanner.nextInt(); 
    } 
    total+=points; 
} 
相關問題