1

次のコードでは、同じ for ループで初期化したにもかかわらずnumber、行内に変数が見つかりません。誰でも理由を教えてもらえますか?number++number

import java.lang.Math;
import java.util.Random;

public class test
{
    public static void main( String [] args )
    {
        String cardNumber; 
        double cardRandom;
        int cardRandomNumber;
        String[] cardSelection = new String[10];

        for (int number = 0; number <=  9; );
        {
            Random ran = new Random();
            cardRandom = ran.nextInt(52 - 1 + 1) + 1;
            cardRandomNumber = (int) Math.round( cardRandom );

            if ( cardRandomNumber > 0 && cardRandomNumber <= 52 )
            { 
                cardNumber =  "card" + cardRandomNumber;
                System.out.println( cardNumber );
                number++; // Says Error: Cannot find symbol
            }
        }   
    }
}

このプログラムは基本的に、1 から 52 までの乱数を選び、その先頭に「カード」を追加して出力します。10 個の数字が出力されるはずです。

4

4 に答える 4

9

次の行の最後のセミコロンは削除する必要があります。

for (int number = 0; number <=  9; );

基本的に、for本体なしでループを宣言します。優れた IDE は、そのようなバグについて警告するはずです。forそして、ところで、ループカウンターをインクリメントすることは、私たちが期待する最後の式に行く必要があります:

for (int number = 0; number <=  9; ++number) {
  //..
}

ところで、コードが常に満たされる不要な変数と条件を削除すると、次のようになります。

public static void main(String[] args) {
    Random r = new Random();
    for (int number = 0; number <= 9; ++number) {
        int cardRandom = 1 + r.nextInt(52);
        String cardNumber = "card" + cardRandom;
        System.out.println(cardNumber);
    }
}

真剣に。

于 2012-08-31T22:28:49.070 に答える
2

誤っforて末尾のセミコロンでループを終了しました:

for (int number = 0; number <=  9; );

これにより、次と同等になります。

for (int number = 0; number <=  9; )
{ ; }

{
    Random ran = new Random();
    cardRandom = ran.nextInt(52 - 1 + 1) + 1;
    cardRandomNumber = (int) Math.round( cardRandom );

    // etc. ...

したがって、number変数をインクリメントすると、変数は範囲外になります。

その末尾のセミコロンを削除します。

于 2012-08-31T22:27:53.340 に答える
1

セミコロンを削除します。

for (int number = 0; number <=  9; ); // <-- this is your problem
于 2012-08-31T22:29:05.647 に答える
0
import java.lang.Math; 
import java.util.Random; 
public class foo 
{
    public static void main( String [] args ) 
    {

        String cardNumber;          
        double cardRandom;       
        int cardRandomNumber;       
        String[] cardSelection = new String[10];   
        for (int number = 0; number <=  9; )
        {
            Random ran = new Random();   
            cardRandom = ran.nextInt(52 - 1 + 1) + 1;         
            cardRandomNumber = (int) Math.round( cardRandom );    



            if ( cardRandomNumber > 0 && cardRandomNumber <= 52 )          
            {     
                cardNumber =  "card" + cardRandomNumber;               
                System.out.println( cardNumber );      
            }
            number++; 
        }
    }   
}

出力は 10 項目のセットです:(プログラムを実行するたびに異なるカード番号が表示されることに注意してください)

card2 card12 card37 card23 card18 card20 card21 card45 card19 card13

于 2012-08-31T22:58:18.950 に答える