除了使用' continue'还有另一种使用while(true)循环忽略值的方法吗?

时间:2015-03-26 04:45:43

标签: java override continue suppress

我已被要求获取用户输入并忽略不在-30和40范围内的值。要跳过无效数字,我会使用'继续'声明。我直言不讳地说,继续/休息是不好的做法。 IDE也在抛出一个不必要的继续"警告。下面的代码是否是解决此问题的良好做法,我应该覆盖警告还是解决它?

我的代码如下所示:

public class Temperatures 
{

@SuppressWarnings("UnnecessaryContinue")
public static void main(String[] args) {

    Scanner reader = new Scanner(System.in);
    // Write your code here. 
    while(true)
    {
        //ask user for input
        double userInput = Double.parseDouble(reader.nextLine());

        //makes sure temperature is within range, if it isn't ignores value and moves on
        if (userInput < -30.0 || userInput > 40.0)
        {
            continue;
        }
        //adds value to graph
        else
        {
            Graph.addNumber(userInput);
        }
     }
}

3 个答案:

答案 0 :(得分:2)

IDE可能会显示警告,因为如果您删除了继续,您的代码将完全相同。想一想。

答案 1 :(得分:2)

  

IDE还会抛出一个不必要的继续&#34;警告。

这是不必要的continue。为什么呢?

如果您的if语句变为true,则else将不会被执行。如果if条件为false,则会执行else。因此,这里不需要continue

在以下情况下应该使用

continue

while(true)
    {
        double userInput = Double.parseDouble(reader.nextLine());
        if (userInput < -30.0 || userInput > 40.0)
        {
            continue;
        }
        Graph.addNumber(userInput);
     }

没有else语句,因此现在必须使用continue来跳过当前迭代的进一步执行。

答案 2 :(得分:1)

在您的情况下,您不需要使用continue。请改用:

if( userInput >= -30 && userInput <= 40){
    Graph.addNumber(userInput);
}