Java无法在同一个for循环中找到符号

Alb*_*ong 1 java for-loop

在下面的代码中,即使我在同一个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
            }
        }   
    }
}
Run Code Online (Sandbox Code Playgroud)

这个程序基本上只是从1-52中选择一个随机数,在它的开头添加"卡片"并打印出来.它应该打印出10个数字.

Tom*_*icz 7

以下行中的最后一个分号必须消失:

for (int number = 0; number <=  9; );
Run Code Online (Sandbox Code Playgroud)

你基本上声明一个for没有身体的循环.好的IDE应该警告你这些错误.BTW递增循环计数器应该转到for我们都期望它的最后一个表达式:

for (int number = 0; number <=  9; ++number) {
  //..
}
Run Code Online (Sandbox Code Playgroud)

BTW在消除了总是满足的不必要的变量和条件后,您的代码如下所示:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

认真.

  • 很好的清理,但每次都不要创建一个新的Random实例.除非您指定种子,否则Randoms的值为System.currentTimeMillis().如果每次都创建一个新的随机数,那么每当循环迭代完成时间小于1毫秒时,您最终会选择相同的卡. (4认同)