3

こんにちは皆さん、私は Java の初心者で、英語が苦手です。私の問題を理解していただければ幸いです。

public static void main(String[] args) {

    int i, a, b, c, d, yil = 1999, rt = 0;


    do{
            //loop searching for 1976
            for( i = 1900; i < 2000; i++){
            //separate "i" to the digits
            a = i / 1000;
            b = i % 1000 / 100;
            c = i % 1000 % 100 / 10;
            d = i % 1000 % 100 % 10;
            rt = a + b + c + d;
            }}
            //while rt=23 and i=1976 equation will be correct then exit the loop and print the 1976.
            while( rt == yil - i );
        System.out.println("Yıl = " + i );

}

しかし、プログラムを実行すると、常に 1976 ではなく 2000 と表示されます。

4

1 に答える 1

3

あなたの混乱した増分はそれを隠すかもしれません、しかしあなたはあなたのforループから抜け出す方法がありません。それは常に最後に行きます、つまりi=2000

for( i = 1900; i < 2000; i++){
   ... // no break in there
}
...
System.out.println("Yıl = " + i );

あなたの場合、2つのループを持つ理由はありません。あなたが欲しいのは

        int i, a, b, c, d, yil = 1999, rt = 0;
        //loop searching for 1976
        for( i = 1900; i < 2000; i++){
            //separate "i" to the digits
            a = i / 1000;
            b = i % 1000 / 100;
            c = i % 1000 % 100 / 10;
            d = i % 1000 % 100 % 10;
            rt = a + b + c + d;
            if (rt==yil-i) break;
        }
        System.out.println("Yıl = " + i );  }

この出力

Yıl = 1976
于 2012-10-21T15:20:20.340 に答える