生成乘法表时Random()返回0,但数组无0值,求技术原因
问题解答:乘法表代码输出0的原因
嘿,我来帮你理清这个问题!你遇到的0其实是数组的索引值,不是你数组里的元素,具体原因看下面:
问题根源
你代码里的new Random().nextInt(anArrayOne.length)方法,返回的是数组的索引,而不是数组中的元素。Java数组的索引是从0开始计数的,你的数组长度是10,所以nextInt(10)会生成0到9之间的随机整数——这就是输出里出现0的原因!你直接把这个索引值当成要相乘的数字打印了,自然会出现不在数组里的0。
修正后的代码
你需要先获取随机索引,再用索引去数组中取出对应的1-10的元素,代码修改如下:
int[] anArrayOne = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int[] anArrayTwo = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // 建议只创建一个Random实例,比多次new更高效合理 Random random = new Random(); int firstIndex = random.nextInt(anArrayOne.length); int secondIndex = random.nextInt(anArrayTwo.length); // 通过索引获取数组里的目标数字 int firstNumber = anArrayOne[firstIndex]; int secondNumber = anArrayTwo[secondIndex]; System.out.println("What is " + firstNumber + " times " + secondNumber + "? ");
额外小建议
尽量不要每次调用nextInt都新建一个Random对象,复用同一个实例可以让生成的随机数分布更均匀,同时也更节省资源。
内容的提问来源于stack exchange,提问作者Rocek
相关产品推荐
相关产品推荐

