4

这段代码在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);
    }
}
4

2 回答 2

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

在您的 for 循环中,您在if. 因此,block在任何情况下都将执行下一个代码,因此您将在第一次迭代后跳出循环。

    {
        tur=i;
        break;
    }

无论您的 if 条件评估为什么,都会执行此块。而你break走出了循环。

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

于 2012-10-27T15:48:38.187 回答
3

就是这一行:

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

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

于 2012-10-27T15:55:57.833 回答