0

2番目のforループでj=iを設定することは違法ですか?最初の反復では機能するようですが、その後は何も出力されません。これを行うためのより適切な方法はありますか?whileループを使用するように書き直しましたが、完全に機能しました。forループの何が問題になっていますか?

public class DaysOfChristmas {
public static void main ( String[] args )
{
    int i,j;
    String day = "";
    String verse = "";

    for ( i = 1; i <= 12; i++)
    {
        switch (i)
        {
            case 1: day = "first";
            break;

            case 2: day = "second";
            break;

            case 3: day = "third";
            break;

            case 4: day = "fourth";
            break;

            case 5: day = "fith";
            break;

            case 6: day = "sixth";
            break;

            case 7: day = "seventh";
            break;

            case 8: day = "eight";
            break;

            case 9: day = "ninth";
            break;

            case 10: day = "tenth";
            break;

            case 11: day = "eleventh";
            break;

            case 12: day = "twelfth";
            break;
        }

        System.out.printf("On the %s day of Christmas my true love gave to me\n", day);

        for ( j = i; j == 1; j--)
        {
            switch (j)
            {
                case 1: verse = "A Partridge in a Pair Tree";
                break;

                case 2: verse = "Two Turtle Doves";
                break;

                case 3: verse = "Three French Hens";
                break;

                case 4: verse = "Four Colly Birds";
                break;

                case 5: verse = "Five Golden Rings";
                break;

                case 6: verse = "Six Geese-a-Laying";
                break;

                case 7: verse = "Seven Swans-a-Swimming";
                break;

                case 8: verse = "Eight Maids-a-Milking";
                break;

                case 9: verse = "Nine Ladies Dancing";
                break;

                case 10: verse = "Ten Lords-a-Leaping";
                break;

                case 11: verse = "Eleven Pipers Piping";
                break;

                case 12: verse = "Twelve Drummers Drumming";
                break;
            }
            System.out.printf("%s ", verse);
        }
        System.out.println();

    }
}

}

4

2 に答える 2

4
for ( j = i; j >= 1; j--)

動作するはずです。問題は、2番目のループはjが1の場合にのみ実行されることでした。それ以外の場合は、まったく実行されません。そして、iが1のとき、jは初めて1になります。

于 2012-09-30T02:49:11.820 に答える
0

それをすることは違法ではありません。ただし、ループ内の状態を考慮してください。

 for ( j = i; j == 1; j--)

そのループは、が正確に1の場合にjのみ実行されます。あなたは間違いなくここであなたの論理を再考するべきです。

于 2012-09-30T02:52:00.050 に答える