我需要获取一个大小为 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] + " ");
}
}
}
始终(如果可能)在函数/类/程序的开头声明所有变量。它使代码更加简洁,并帮助您识别可能发生的错误。
保持循环参数一致。从 0 开始一直向上,或者从最后一个值开始向下。它消除了再次出错的可能性。我更喜欢总是从 0 开始,但这取决于你,只要它干净并且有效。
除非你初始化一个数组,否则它将会是空的。如果您尝试从中打印,您很可能会看到零。
关于java - 为什么我的java程序每次都打印零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35249071/