繁体   English   中英

为什么我的Java程序每次都打印零?

[英]Why is my java program printing zero every time?

我需要采用一个大小为x的数组(其中包含从x开始然后递减到1的数字),然后使用一个大小为y的新数组(该大小可能与x相同或不同),打印从数组x到数组y中取出随机数。 我编写了程序,它运行正常,但是由于某种原因,在输出的随机数列表中,将显示数字0。 有人知道为什么会这样吗? 这是我的代码:

import java.util.Random;
public class Prog1A 
{
    public static void main(String[] args)
    {
        System.out.println("Program 1A, Christopher Moussa, masc1574");
        Random randGen = new Random();
        int[] arr_1 = new int[8];
        for (int i = arr_1.length - 1; i >= 0; i--)
        {
            arr_1[i] = arr_1[i];
        }
        int[] arr_2 = new int[6];
        for (int i = 1; i <= arr_2.length; i++)
        {
            System.out.print(randGen.nextInt(arr_1.length) + " ");
        }
    }
}

任何反馈将不胜感激,谢谢。

好吧,您对此循环不做任何事情。 您实际上是在整个数组中为其本身分配一个变量。 另外,我不喜欢您编写循环条件的方式,但我的偏好不是这里的问题。

for (int i = arr_1.length - 1; i >= 0; i--)
    {
        arr_1[i] = arr_1[i]; //This code does nothing
    }

然后,您创建arr_2[]但从未为变量分配任何内容。 我继续并编辑了您的代码,我将解释一些事情。

import java.util.Random;
public class Prog1A 
{
    public static void main(String[] args)
    {
        Random randGen = new Random();
        int[] arr_1 = new int[8];
        int[] arr_2 =  new int[6];

        System.out.println("Program 1A, Christopher Moussa, masc1574");

        //Assigns a random number to each member of arr_1
        for (int i = 0; i < arr_1.length; ++i)
        {
            arr_1[i] = randGen.nextInt(arr_1.length);
        }

        //Copies arr_1 values to arr_2
        for (int i = 0; i < arr_2.length; ++i) //Counting up [0 to 5]
        {
            arr_2[i] = arr_1[i];
        }

        for (int i = 0; i < arr_2.length; ++i)
        {
            System.out.print(arr_2[i] + " ");
        }
    }
}
  1. 始终(如果可能)在函数/类/程序的开头声明所有变量。 它使代码更整洁,并帮助您确定可能发生的错误。

  2. 保持循环参数一致。 从0开始并始终上升,或者从最后一个值开始并下降。 它消除了再次出错的可能性。 我更喜欢始终从0开始,但是取决于您,只要它是干净的并且可以工作。

  3. 除非您初始化数组,否则它将为空。 如果尝试从中打印,您很可能会看到零。

只需将结果加1,数组的长度为8。使用当前代码,您将返回0到7之间的一个随机数。nextInt方法将永远不会返回所提供整数值的上限。 您可以通过将arr_1.length交换为另一个数字(例如10)然后删除+ 1来自己进行测试。 您会注意到,它最多只会返回数字9,而返回的是最低数字0。

 System.out.print((randGen.nextInt(arr_1.length) + 1) + " ");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM