2

宿題に取り組んでいますが、プログラムの重要なループで問題が発生しています。私の先生は、カウンタ制御変数に while ループを使用するとポイントが減ると教えてくれました。

これが私が働きたいことであり、私が心の中で感じていることはうまくいくはずです:

for ( int check = 0; check == value; check++ ) {
    int octal = getOctal();
    int decimal = convertOctal( octal );
    System.out.printf( "%d:%d", octal, decimal );
}

ただし、このループは実行されません。while ループでやってみましたが、完璧に動作しました!

int check = 0;
while ( check < value )
{
    int octal = getOctal();
    int decimal = convertOctal( octal );
    System.out.printf( "%d:%d", octal, decimal );
    check++;
}

メインメソッドの残りの部分は次のとおりです。

public static void main ( String args[] )
{
    int value = getCount();

    while ( value < 0 )
    {
        System.out.print( "\nYou must enter a positive number" );
        value = getCount();
    }

    if ( value == 0 )
    {
        System.out.print( "\n\nNo numbers to convert.\n\n" );
    }
    else
    {   
        int check = 0;
        while ( check < value )
        {
            int octal = getOctal();
            int decimal = convertOctal( octal );
            System.out.printf( "%d:%d", octal, decimal );
            check++;
        }
    }
}

はい、これは 8 進数から 10 進数へのコンバーターです。私は自分自身でコンバーター メソッドをゼロから作成しましたが、それを途方もなく誇りに思っています。

編集: 私の質問は、ここで何が問題なのですか? EDIT part deux: 私の誤解を解いてくれてありがとう。メソッドのドキュメントに進みましょう!

4

4 に答える 4

12
for ( int check = 0; check == value; check++ )

これは次の場合にのみ実行されますcheck == value。次のように変更します。

for ( int check = 0; check < value; check++ )
于 2013-03-27T20:07:04.070 に答える
3

for ( int check = 0; check <= value; check++ )代わりに試してくださいfor ( int check = 0; check == value; check++ )

于 2013-03-27T20:06:31.783 に答える
1

オラクルのウェブサイトから(私の強調):

for ステートメントは、値の範囲を反復処理するためのコンパクトな方法を提供します。プログラマーは、特定の条件が満たされるまで繰り返しループする方法から、これを「for ループ」と呼ぶことがよくあります。for ステートメントの一般的な形式は、次のように表すことができます。

for (initialization; termination; increment) {
statement(s) 
} 

このバージョンの for ステートメントを使用する場合は、次の点に注意してください。

初期化式はループを初期化します。ループの開始時に 1 回実行されます。

終了式が false と評価されると、ループは終了します。

インクリメント式は、ループを反復するたびに呼び出されます。この式で値をインクリメントまたはデクリメントすることはまったく問題ありません。

于 2013-03-27T20:13:23.140 に答える
0

以下と同じ効果を得るには:

int check = 0;
while (check < value) {
  // something
}

for次のようになります。

for (int check = 0; check < value; check++) {
  // something
}
于 2013-03-27T20:10:49.983 に答える