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 项:(请注意,每次运行程序时,它都会给出不同的卡号)

卡2 卡12 卡37 卡23 卡18 卡20 卡21 卡45 卡19 卡13

于 2012-08-31T22:58:18.950 回答