for循环中i ++部分中的死代码警告

时间:2012-10-27 15:46:38

标签: java loops for-loop dead-code

此代码一直在for循环中的i++上给我一个死代码警告,并且由于某种原因它没有递增i

import java.util.Scanner;


public class HideThatNumber {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        int enc=input.nextInt();
        int tur=0;
        String test="";
        double x;
        for (int i=1;i<10;i++){
            test="";
            test+=i;
            test+=enc;
            x=Integer.parseInt(test);
            x/=11;
            if(x==Math.round(x));{
                tur=i;
                break;
            }
        }
        if(tur==0)
            System.out.println("Impossible");
        else 
            System.out.println(Integer.parseInt(test)/11);
    }
}

2 个答案:

答案 0 :(得分:13)

    if(x==Math.round(x)); <--semi-colon
    {
        tur=i;
        break;
    }

在你的for循环中,你在if的末尾放了一个分号。因此,在任何情况下都会执行下一个block代码,因此您将在第一次迭代后突破循环。

    {
        tur=i;
        break;
    }

无论您的if条件评估为什么,都将执行此块。你break离开了圈子。

因此您会收到警告,因为永远不会执行i++

答案 1 :(得分:3)

就是这一行:

if(x==Math.round(x)); {

分号不应该在那里。在您的代码中,break;的块总是被执行 - 所以它在第一次迭代后就会中断。