我需要获取一个大小为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) + " ");
}
}
}
非常感谢任何反馈,谢谢。
答案 0 :(得分:1)
嗯,你没有对这个循环做任何事情。你实际上是在整个数组中为自己分配一个变量。另外,我不喜欢你编写循环条件的方式,但我的偏好不是这里的问题。
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开始,但它取决于你,只要它干净且有效。
除非你初始化一个数组,否则它将是空的。如果您尝试从中进行打印,则很可能会看到零。
答案 1 :(得分:0)
只需在结果中添加一个,数组的长度为8.使用当前代码,您将返回0到7之间的随机数.sextInt方法永远不会返回提供的整数值的上限。您可以通过将arr_1.length
替换为其他数字(例如10)来自行测试,然后移除+ 1
。您会注意到它最多只会返回数字9,而0将是返回的最小数字。
System.out.print((randGen.nextInt(arr_1.length) + 1) + " ");