如何在do循环中初始化变量而不传递值直到循环关闭?

时间:2015-02-10 21:53:49

标签: java scope do-while

我一直在编写一个需要输入1到4之间数字的程序。为了防止输入超出范围的数字。但是,变量不断传递给另一段代码并导致程序失败。 这是do while循环:

        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: %s\n", n+1, sum);
    }

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

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

我试过限制&#34;季度&#34;仅在循环内,但while子句不起作用。在循环关闭之前,如何防止变量通过? 附:这个问题是赋值的一部分,因此我必须使用do while循环。

1 个答案:

答案 0 :(得分:1)

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

&#34; do / while&#34;条件似乎是错误的。如果您的意图是,据我所知,继续询问用户,直到他/她通知1到4之间的有效季度,条件应该类似

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

如果我认为该季度在某些代码之间接收了quarterNum的值,则第二部分似乎是正确的,并且仅当quarter不是有效值(确切地为-1)时才会发生异常。修复do / while条件将不再可能。

我不知道限制变量范围可能与您的问题有什么关系。 (我甚至不会看到你的意思&#34;阻止变量传递直到循环关闭&#34;)。

我希望我能帮到你。