4

i++このコードは、forループでデッドコード警告を出し続けi、何らかの理由でforをインクリメントしていません!

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;alwaysのあるブロックが実行されるので、最初の反復の後で壊れます。

于 2012-10-27T15:55:57.833 に答える