1

私は最初の CS クラスの暗号化の割り当てに取り組んでおり、このコードを機能させようとしています...これが私が持っているものです。

    public static void findE(int phiPQ) {

        int e = 0;

        for(e > 2; e < (phiPQ - 1);) {
            int larger = phiPQ;
            int smaller = e;
            int r = 1;
            r = larger / smaller;
            larger = smaller;
            smaller = r;

            if(larger  == 1) {
            break;
        }
        return; 
     }

今私が抱えている問題は、for ループで "e > 2" を実行しようとすると機能せず、代入演算子が無効であると言うことです。割り当ては、e > 2 から e < (phiPQ - 1) までの for ループを使用することになっていることを示しています。whileループのようなものなしでこれがどのように可能ですか? 私もそれを試してみましたが、return ステートメントを機能させることができませんでした。助けてください!

4

4 に答える 4

1

以下で説明する問題のいくつかを誰かが「修正」しました。YMMV。


コードにはいくつかの重大な問題があります。構文および/またはセマンティックエラーの組み合わせは、互いに複合する可能性があります。まず、あからさまな構文エラーを修正することから始めます。

1. for 構文が間違っています。

forループ ステートメントの最初の「部分」は、初期化ステートメントでなければなりません(「代入」と読みます)。任意の式にすることはできません。構文は次のとおりですfor(initialization; termination; increment) statement。詳細については、リンクを参照してください。

コードは次のようになると思います。

for(/* At the start, LET e = 2 */
    e = 2 ;
    /* Terminate when this is false. */
    e < (phiPQ - 1) ;
    /* no increment */) ..

または:

for(e = 2; e < (phiPQ - 1) ;) ..

(または、efor ループの上に 2 を代入し、空の初期化ステートメントを提供します。)

2. コメントで識別されるように、コードは次と同等です。

// This is a loop with AN EMPTY STATEMENT FOR A BODY due to the
// immediately trailing semicolon.
// Even when this loop is corrected per above, the condition will never
// change state due to lack of increment and it will "loop forever".
for(e > 2; e < (phiPQ - 1);) ;

// This is a new block, that does NOT BELONG to the loop above.
{
    int larger = phiPQ;
    int smaller = e;
    int r = 1;
    r = larger / smaller;
    larger = smaller;
    smaller = r;
}

これを修正するには、ステートメントの;直後にあるを削除します。for

3. ループは決して状態を変更しません。

終了条件は と に依存しeますphiPQ。ただし、これらの変数は決して変更されないため、ループがループすることも、正常に終了することもありません。

ループの終了条件と状態の進行を確認します。

4. for 文のbreakで使用されています。

#3はコードが決して終了しないことを主張していますが、 (ループ構造の外側に誤って配置され、構文エラーになります)ifを含むステートメントがループを終了することを意図している場合があります。この場合は、ループ本体内にある必要があります。break

于 2013-10-31T03:22:41.980 に答える
0

どうですか:

for (int e = 0; e > 2 && e < (phiPQ - 1);)
{
    // your code
}
于 2013-10-31T03:11:49.920 に答える
0

ループの場合:

for(int e = 3; e < (phiPQ - 1); e++){

}
于 2013-10-31T03:12:16.910 に答える
0

a の最初の式が初期化に使用されているため、このエラーが発生していfor-loopます。2 番目の式は終了条件です。終了条件が に評価されるfalseと、ループは終了します。例えば

for (int i = 0; i < numIterations; i++) {}

このループは本体のnumIterations時間を繰り返します。

したがって、2 番目の式でループの反復空間をより完全に定義するかe、最初の式で代入を実行する必要があります。

詳細については、s のJavadocを参照してくださいfor-loop

于 2013-10-31T03:12:17.140 に答える