使用for循环的Java跟踪
我试着追踪这一点,但发现很难弄清楚到底发生了什么。我也试过调试,但没有成功使用for循环的Java跟踪,java,loops,for-loop,trace,Java,Loops,For Loop,Trace,我试着追踪这一点,但发现很难弄清楚到底发生了什么。我也试过调试,但没有成功 public class bob { public static void main(String[] args) { int[][] numbers = {{1, 0}, {4, 1}, {2, 3}, {1, 4}}; int[] frequencies = new int[5]; for (int row = 0; row < numbers.length; row++)
public class bob {
public static void main(String[] args) {
int[][] numbers = {{1, 0}, {4, 1}, {2, 3}, {1, 4}};
int[] frequencies = new int[5];
for (int row = 0; row < numbers.length; row++)
for (int col = 0; col < numbers[row].length; col++) {
frequencies[numbers[row][col]]++;
}
for (int i = 0; i < frequencies.length; i++)
System.out.print(frequencies[i] + " ");
}
}
公共类bob{
公共静态void main(字符串[]args){
int[][]数={{1,0},{4,1},{2,3},{1,4};
int[]频率=新int[5];
for(int row=0;row
我的打印输出是1,4,4,1
,但eclipse给了我1,3,1,1,2
如果有人能追踪到第一部分,我就可以追踪剩下的部分了。任何帮助都将不胜感激
谢谢大家! 您的打印输出不应该是
1,4,4,1
,因为您在频率上循环了5次
1,3,1,1,2
是正确的输出
我建议您为循环(行)的外部
添加大括号,因为如果在内部循环之后添加代码,它将不会成为主循环的一部分。您首先初始化频率
,将其作为值为{0,0,0,0,0}的int的默认数组
在循环中迭代时,可以使用数字
数组提供的索引访问此默认数组,然后以频率[数字[行][col]]
递增每个int。因此,在第一次通过时,您将把频率的第一个元素增加1;在下一个过程中,您将把频率的第0个元素增加1
因此,在迭代结束时,frequencies
包含numbers
中每个特定数字的频率,从0到4,从而生成一个{1,3,1,1,2}的frequencies
数组。很有趣的事情,一旦你做了,就很简单!希望有帮助 Eclipse应该有一个调试器。使用它有什么问题?RE:“我的打印输出是1,4,4,1,但eclipse给了我1,3,1,1,2”这是什么意思?有什么问题吗?我试过用它,但好像迷路了。谢谢你的回复。至于你的代码——它是一个嵌套的for循环,基本上它迭代每个元素的数字,并用当前索引增加元素的频率。因此,它输出1,3,1,1,2也就不足为奇了。作为一种良好的实践,您应该始终在for/if/while(等)中添加大括号。如果没有它,你只会让它更容易出错,更难阅读。非常感谢你,这让它更有意义,也许我只是需要休息一下。我不知道为什么我会头昏脑胀。现在我看到了,这就像是在说废话!再次感谢大家和莱奥斯诺:没问题,很荣幸!