我刚接触过Java,几天前才刚刚开始,从零开始。我使用Eclipse尝试了一个矩阵程序来理解"for“循环的功能。
类MatrixClass {String[](String[] args) { // TODO自动生成的方法存根int a=新int4;int temp=15;int i= 0;int j= 0;ai=0;for (i = 0;i< 4;i++) { System.out.println();for (j = 0;j< 3;j++) { ai=temp;temp = temp + 15;System.out.print(ai + ");}
输出:
15 30 45
60 75 90
105 120 135
150 165 180上面的程序运行良好,我得到了期望的输出。我不明白的是需要一个临时变量。为什么不能使用现有变量本身作为增量呢?当我尝试增加现有变量(ai)时,即使代码被执行,为什么输出中的值没有增加呢?
package day1.examples;
public class MatrixClass {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[][] a = new int[4][3];
//int temp=15;
int i = 0;
int j = 0;
a[i][j]=0;
for (i = 0; i < 4; i++) {
System.out.println();
for (j = 0; j < 3; j++) {
//a[i][j]=temp;
a[i][j] = a[i][j] + 15;
System.out.print(a[i][j] + " ");
}
}
}
}输出:
15 15 15
15 15 15
15 15 15
15 15 15发布于 2014-05-12 12:44:34
默认情况下,数组初始化为其默认值。请阅读以下内容:
因此,当您将15添加到每个单元格时,您就拥有了a[i][j] = 0 + 15;。
您所称的临时变量具有语言流行词累加器(定义#7)。
计算器或计算机中的寄存器,用于保存计算或数据传输的中间结果。
每次遍历循环时,这个值都会发生变化,这就是为什么值的结果不同。如果不使用临时变量,则每次都必须计算来自i和j值的结果(在本例中,使用类似于(i * 3 + j) * 15的公式)。
发布于 2014-05-12 12:37:49
示例中最后一个示例中的a[i][j] = a[i][j] + 15;行接受a[i][j]值,并将其增加15。在代码初始化的矩阵值中没有任何地方,因此所有值都是0。
当您理解a[i][j]每次更改i或j时指向一个新变量时,您将了解所有内容。
这意味着矩阵中的所有值都是15。
我会做这样的循环:
for (int i = 0; i < 4; i++) {
System.out.println();
for (int j = 1; j <= 3; j++) {
a[i][j-1] = 15 * (j + (i * 3))
System.out.println(a[i][j-1] + " ");
}
}发布于 2014-05-12 12:45:49
在第一种情况下,您将临时变量声明为15,并在每次将其存储在数组中时将其值增加15,而在第二种情况下,您使用的是ai的值,而且由于ai只为a而不是为其他变量初始化,因此根据语言标准,它将自动初始化为数组primitve类型,在这种情况下,该类型为int,而对于int,默认值为零。因此,每次只显示0+15 i.15。
https://stackoverflow.com/questions/23609229
复制相似问题