如何在do while循环中初始化变量,而不传递值,直到循环结束



我一直在编写一个程序,该程序需要输入一个介于1和4之间的数字。为了防止输入超出范围的数字。然而,变量不断传递给另一段代码,导致程序失败。这是边做边做的循环:

        do
    {
        System.out.println("Please enter a quarter number 1-4: ");
        quarter = scanIn.nextInt();     
    }while((quarter > 5 ) && (quarter < 0));

这是一段运行变量的代码:

        for (int n = ((quarter * 3)-3); n < (quarter*3); n++)
    {
        String sum = fmt.format(monthSales[n]);
        System.out.printf("Sales for month %d: %sn", n+1, sum);
    }

这是输入错误输入时返回的错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -6
at lab4.Lab4.main(Lab4.java:57)

我曾尝试将"quarter"的范围限制为仅在循环中,但while子句不起作用。在循环结束之前,如何防止变量通过?这个问题是作业的一部分,因此我必须使用do while循环。

我在您的代码中看到一件事:

"do/while"条件似乎是错误的。据我所知,如果你的意图是不断询问用户,直到他/她通知1到4之间的有效季度,那么条件应该类似

do {
  // ...
} while (quarterNum < 1 || quarterNum > 4);

如果我假设quarter在其间的某个代码中接收到quarterNum的值,那么第二部分似乎是正确的,并且只有当quarter不是有效值(确切地说是-1)时才会发生异常。修复do/while条件将不再可能。

我看不出限制变量作用域对您的问题有什么影响。(我甚至不明白你说的"在循环关闭之前阻止变量通过"是什么意思)。

我希望我能帮助你。

最新更新