0

我正在尝试创建两个单独的 10 列和 10 行数字输出。第一个输出使用数字 4 到 7,第二个输出使用数字 10 到 90(例如 10、20、30 等)。但是随机调用这些号码,而不是按特殊顺序。以下是我拥有的 Java 代码:

import java.util.Random;
public class LabRandom
{
private static final Random rand = new Random();
public static void main(String[] args)
{

    int number;

    int i = 1;

    while (i <= 100)
    {
        //number = rand.nextInt(4) + 4;
        System.out.printf("%-5d", rand.nextInt(4) + 4);

        if (i % 10 == 0)
        {
            System.out.println();
        }
        i++;
    }
    System.out.println();

    while (i <= 100)
    {
        //number = rand.nextInt(4) + 4;
        System.out.printf("%-5d", rand.nextInt(10 *(80) + 10));

        if (i % 10 == 0)
        {
            System.out.println();
        }
        i++;
    }
   }    
}

我只是不知道我错过了什么,代码只运行第一个 while 语句而不是第二个 while 语句。

4

3 回答 3

1

您还没有重新初始化i,并且在第一个循环之后,它已经 equal 101,因此不会进入第二个循环。

正如您对问题的评论中提到的那样,for循环在这里是一个更合适的结构。

此外,在第二个循环中,语句:

rand.nextInt(10 *(80) + 10)

似乎它不会做你想做的事。你可能需要类似的东西:

rand.nextInt(9) * 10 + 10
于 2013-03-13T15:48:19.687 回答
0

在第二个 while 循环之前设置 i 的值。

    import java.util.Random;

    public class LabRandom
    {
    private static final Random rand = new Random();
    public static void main(String[] args)
    {

        int number;

        int i = 1;

        while (i <= 100)
        {
            //number = rand.nextInt(4) + 4;
            System.out.printf("%-5d", rand.nextInt(4) + 4);

            if (i % 10 == 0)
            {
                System.out.println();
            }
            i++;
        }
        System.out.println();

i = 1;//modified here

        while (i <= 100)
        {
            //number = rand.nextInt(4) + 4;
            System.out.printf("%-5d", rand.nextInt(10 *(80) + 10));

            if (i % 10 == 0)
            {
                System.out.println();
            }
            i++;
        }
       }    
    }
于 2013-03-13T15:50:39.030 回答
0

您需要i在第二次之前重置while

于 2013-03-13T15:48:22.893 回答