pk_monkey 2017-09-16 07:19 采纳率: 100%
浏览 7361
已采纳

java i=i+2与i+=2的区别

import java.util.*;
public class lianxi {

public static void main(String[] args) {
    int N=3;
    int[][] a = new int[N][N];

    int i=0;   //行
    int j=N/2; //列
    a[i][j]=1;

    for(int n=2;n<=N*N;n++)
    {
        //往45度方向放下一个数字
        i--;
        j++;            

        if(i<0 && j>=N)//两边越界,//行和列都越界
        {
            i=i+2;
            j--;
        }
        else if(i<0)//行越界
        {
            i=N-1;
        }
        else if(j>=N) //列越界
        {
            j=0;
        }
        else if(a[i][j]!=0)  //有冲突
        {
            i=i+2;
            j--;
        }

        a[i][j]=n;
    }

    //输出
    for(i=0;i<N;i++)
    {
        for(j=0;j<N;j++)
        {
            System.out.print(a[i][j] + "\t");
        }
        System.out.println();
    }
        }

}
结果是:
8 1 6

3 5 7

4 9 2

import java.util.*;
public class lianxi2 {

public static void main(String[] args) {
    int N = 3;
    int[][] a = new int[N][N];
    int i = 0;
    int j = N/2;
    a[i][j] = 1;
    for(int n=2;n<=N*N;n++){
            i--;
            j++;
            if(i<0 && j>=N){
                i+=2;
                j--;
            }
            else if(i<0){
                i=N-1;
            }
            else if(j>=N){
                j=0;
            }
            else if(a[i][j]!=0){
                i+=2;
                i--;
            }
            a[i][j]=n;
            }
    for(i=0;i<N;i++){
        for(j=0;j<N;j++){
            System.out.print(a[i][j]+"\t");
            }
            System.out.println();
        }
    }

}
结果是:
7 1 5

3 4 6

0 8 9

  • 写回答

7条回答 默认 最新

  • Little_小R 2017-09-16 12:06
    关注

    实际运用中没有区别,在运行效率中是有区别的,i=i+2操作中,先是读取左边i的地址,然后再次读取右边i的地址,i加2,然后把它赋值给左边的i;i+=2是只读一次i的地址,然后加2,再赋值到i。还有,你的代码上下有区别

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥15 算法题:数的划分,用记忆化DFS做WA求调
  • ¥15 chatglm-6b应用到django项目中,模型加载失败
  • ¥15 武汉岩海低应变分析软件,导数据库里不显示波形图
  • ¥15 CreateBitmapFromWicBitmap内存释放问题。
  • ¥30 win c++ socket
  • ¥30 CanMv K210开发板实现功能
  • ¥15 C# datagridview 栏位进度
  • ¥15 vue3页面el-table页面数据过多
  • ¥100 vue3中融入gRPC-web
  • ¥15 kali环境运行volatility分析android内存文件,缺profile