2

ステートメントが同じものを何度も出力しないように、print ステートメントをループの外に置きたいと思います。以下の for ループは単純に、ある配列の数値を別の配列と照合して、見つかった一致の数を調べます。上記の変数を定義し、以下のステートメントを出力すると、理解できる「変数が初期化されていないエラー」が発生します。

for (int i = 0; i < 6; i++)
{
    int chkNum = myArray[i];
    int lottMtch = count(chkNum, rndNum);

    if (lottMtch > 0)
    {
        System.out.println(lottMtch + "matches found");
        System.out.print(chkNum);
    }
    else {
        System.out.print("no matches found");
    }
}
4

5 に答える 5

3

ループの前に変数を宣言し、変数が見つかった場合は変数に 1 を追加し、変数が 0 より大きい場合は後で出力するなど、ループ内で処理を行います。このようなもの...

int var = 0;
for(...) {
   if(found)
       var++;
}
if(var > 0)
    sysout(var);

もちろん、このコードは機能しませんが、これがスタートです。あなたの学習経験のために、私はあなたのコードでこのアイデアを実装させます.

于 2013-08-09T23:56:26.863 に答える
2

これは、ループの上でのみ変数を宣言し、ループ内で変数を初期化するだけの場合、ループの外で変数を出力しようとすると、それらが初期化されているという保証がないためです。

したがって、おそらく次のようなものが必要です。

int lottMtch = 0;

for (int i = 0; i < 6; i++)
{
    int chkNum = myArray[i];
    lottMtch += count(chkNum, rndNum);
    //System.out.print(chkNum); this would not really make sense outside of the loop
}

if (lottMtch > 0)
{
    System.out.println(lottMtch + "matches found");
}
else 
{
    System.out.print("no matches found");
}
于 2013-08-09T23:53:26.947 に答える
0

ループの終了後に変数にアクセスする場合は、ループの外側で変数を宣言する必要があります。

于 2013-08-09T23:54:45.810 に答える
-2

ループの外で変数を初期化する必要があります。これを試して:

int chkNum = 0;
int lottMtch = 0;

for (int i = 0; i < 6; i++)
{
    chkNum = myArray[i];
    lottMtch = count(chkNum, rndNum);

}

if (lottMtch > 0)
{
    System.out.println(lottMtch + "matches found");
    System.out.print(chkNum);
}
else {
    System.out.print("no matches found");
}
于 2013-08-09T23:58:43.667 に答える