我不能离开我的while循环

时间:2015-04-23 08:58:40

标签: java while-loop

我为类活动写的以下程序提示用户在0到100之间有无限量的测试标记,当用户输入该范围之外的标记时,它应该告诉用户它的无效(到目前为止工作)在我的程序中)。当用户输入“-1”时,它应该停止程序,然后打印出那些标记的平均值。

import java.util.*; 

public class HmWk62 {

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

    public static void main(String[] args) {


        int count=1; 
        int mark, total=0; 
        double average; 

        System.out.println("please enter mark "+count);
        mark = console.nextInt();
        count++; 

        while ((mark >= 0)&&(mark <= 100)){
            System.out.println("Please enter mark "+count);
            mark = console.nextInt(); 
            total += mark ;
            ++count; 

            while ((mark < 0)||(mark > 100)){
                System.out.println("Invalid mark, please re-enter");
                mark = console.nextInt(); 
            }
        }
    }
}  

4 个答案:

答案 0 :(得分:6)

  

当用户输入&#34; -1&#34;它应该停止程序,然后打印出那些标记的平均值。

如果用户输入-1,您将永远不会退出验证输入的嵌套循环。

如果要允许-1,则应更改嵌套循环中的条件以允许它:

while (mark < -1 || mark > 100)

另请注意,您在验证之前使用mark - 所以如果输入10000,您仍然会向{{1}添加10000然后,在你要求一个新值之前 - 然后你将忽略新值。

此外,您还没有使用输入的total的第一个值,除了查看是否应该进入循环。

我怀疑你真的想要这样的东西:

mark

答案 1 :(得分:0)

让代码检查是否设置了全局变量。

例如,创建变量:df = structure(list(q1 = "answer1;answer2;ansert4 ", q2 = 1986L), .Names = c("q1", "q2"), class = "data.frame", row.names = c(NA, -1L))

在while循环中

检查此变量: 像:

boolean userCancelled = false;

答案 2 :(得分:0)

我建议您使用此while替换do while loop循环,如下所示:

    do {
        System.out.println("Please enter mark "+count);
        mark = console.nextInt(); 
        if(mark == -1){
           break;
        }else if((mark >= 0)&&(mark <= 100)){
           total += mark ;
           ++count; 
        }else{
            System.out.println("Invalid mark, please re-enter");
            mark = 0; 
        }
    } while ((mark >= 0)&&(mark <= 100));

答案 3 :(得分:-1)

然后内部的while循环就是你陷入其中的一个。

一方面,你需要一个无效的标记才能退出, 但另一方面,程序会拒绝无效标记并继续询问,直到您输入有效标记。

结果 - 你被困住了。

解决方案: 将内部while更改为if,并将平均计算代码和System.exit()放在if块中。

相关问题