2014-03-30 38 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; 
} 
相关问题