Java Arrays 帮助:为啥我的代码打印 0? [关闭]
Posted
技术标签:
【中文标题】Java Arrays 帮助:为啥我的代码打印 0? [关闭]【英文标题】:Java Arrays Help: Why is my code printing 0? [closed]Java Arrays 帮助:为什么我的代码打印 0? [关闭] 【发布时间】:2022-01-20 15:48:59 【问题描述】:我正在尝试编写一个程序来打印给定值的一定数量的倍数。我的课在下面:
public class Multiples
private int m; //the base number used for listing multiples
public Multiples(int x)
m = x; //x is passed in from the user
public int getM()
return m;
public int[] make (int num)
//num gives the total amount of multiples to be printed for a given m
int[] temp = new int[num];
for (int j = 1; j < num; j++)
System.out.println("j: "+ j + ", num: " + num + ", m: "+ m);
//I'm printing the line above to check the values being used
temp[j] = j * m; //fills the array with num multiples of j
return temp;
//ends make method
我的输出 Screen Run # 13
鉴于我用于 j、num 和 m 的值,我不明白为什么要打印 0。鉴于我从 j = 1 开始,前 5 个 7 的倍数的输出不应该是 7 14 21 35 42 吗?还要注意,前几个 6 的倍数的运行我有同样的问题(我有点理解,因为我也使用相同的算法来打印这些问题)。我尝试使用增强的 for 循环并得到完全相同的输出。
这是我第一次涉足数组;我已经查看了 here 和 here 以更好地理解数组,也许可以弄清楚为什么我的输出表现如此但看不到我的错误。
【问题讨论】:
索引从0
开始,您将第一个值放在索引1
【参考方案1】:
原因是你从不写信给temp[0]
,因为j
从 1 开始。
for (int j = 1; j < num; j++)
System.out.println("j: "+ j + ", num: " + num + ", m: "+ m);
//I'm printing the line above to check the values being used
temp[j] = j * m; //fills the array with num multiples of j
【讨论】:
所以对于我的修复,我将循环声明更改为 j = 0 但在方法中我更改了这一行 temp[j] = j * m;到 temp[j] =(j+1) * m;它似乎可以在没有“索引超出范围”错误的情况下工作。谢谢!以上是关于Java Arrays 帮助:为啥我的代码打印 0? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Arrays.toString() 会给出与手动打印数组不同的输出? [关闭]
关于JAVA数组,Arrays为啥直接可以使用sort方法不用建对象