此代码一直在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);
}
}
答案 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;
的块总是被执行 - 所以它在第一次迭代后就会中断。