Java 使用随机变量产生两个独立输出时遇到问题

Java 使用随机变量产生两个独立输出时遇到问题,java,random,Java,Random,我试图创建两个独立的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

我试图创建两个独立的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++;
    }
   }    
}
import java.util.Random;
公共类LabRandom
{
私有静态最终随机兰德=新随机();
公共静态void main(字符串[]args)
{
整数;
int i=1;

虽然(i您尚未重新初始化
i
,但在第一个循环之后,它将已经等于
101
,因此将不会进入第二个循环

正如在对您的问题的评论中所提到的,这里的
for
循环更合适

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

rand.nextInt(10 *(80) + 10)
它似乎不能满足您的需要。您可能需要以下内容:

rand.nextInt(9) * 10 + 10

您需要在第二个while循环之前重置
i
while

在第二个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++;
        }
       }    
    }
import java.util.Random;
公共类LabRandom
{
私有静态最终随机兰德=新随机();
公共静态void main(字符串[]args)
{
整数;
int i=1;

while(我在第一个while循环后重置了i在连续的
while
循环中使用变量会导致类似的错误。如果需要X次迭代,请使用
for
循环。(顺便说一句,这将是开始使用调试器的好时机:在第二个循环上设置断点并检查
i
的值会使事情立即变得明显!)(运行“更正”版本会立即显示这一点),您的第二个循环没有输出所需的数字-您需要使用整数除法,也就是乘法。