首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要一个临时变量

需要一个临时变量
EN

Stack Overflow用户
提问于 2014-05-12 12:35:56
回答 4查看 1.2K关注 0票数 2

我刚接触过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 + ");}

输出:

代码语言:javascript
复制
15 30 45 
60 75 90 
105 120 135 
150 165 180

上面的程序运行良好,我得到了期望的输出。我不明白的是需要一个临时变量。为什么不能使用现有变量本身作为增量呢?当我尝试增加现有变量(ai)时,即使代码被执行,为什么输出中的值没有增加呢?

代码语言:javascript
复制
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] + " ");

            }

        }

    }

}

输出:

代码语言:javascript
复制
15 15 15 
15 15 15 
15 15 15 
15 15 15
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-05-12 12:44:34

默认情况下,数组初始化为其默认值。请阅读以下内容:

  • Oracle默认值教程

因此,当您将15添加到每个单元格时,您就拥有了a[i][j] = 0 + 15;

您所称的临时变量具有语言流行词累加器(定义#7)

计算器或计算机中的寄存器,用于保存计算或数据传输的中间结果。

每次遍历循环时,这个值都会发生变化,这就是为什么值的结果不同。如果不使用临时变量,则每次都必须计算来自ij值的结果(在本例中,使用类似于(i * 3 + j) * 15的公式)。

票数 3
EN

Stack Overflow用户

发布于 2014-05-12 12:37:49

示例中最后一个示例中的a[i][j] = a[i][j] + 15;行接受a[i][j]值,并将其增加15。在代码初始化的矩阵值中没有任何地方,因此所有值都是0。

当您理解a[i][j]每次更改ij时指向一个新变量时,您将了解所有内容。

这意味着矩阵中的所有值都是15。

我会做这样的循环:

代码语言:javascript
复制
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] + " ");
    }
}
票数 2
EN

Stack Overflow用户

发布于 2014-05-12 12:45:49

在第一种情况下,您将临时变量声明为15,并在每次将其存储在数组中时将其值增加15,而在第二种情况下,您使用的是ai的值,而且由于ai只为a而不是为其他变量初始化,因此根据语言标准,它将自动初始化为数组primitve类型,在这种情况下,该类型为int,而对于int,默认值为零。因此,每次只显示0+15 i.15。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23609229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档