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

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 删除虚拟显示器驱动 删除所有 Xorg 配置文件 删除显示器缓存文件 重启系统 可是依旧无法退出虚拟显示器
  • ¥15 vscode程序一直报同样的错,如何解决?
  • ¥15 关于使用unity中遇到的问题
  • ¥15 开放世界如何写线性关卡的用例(类似原神)
  • ¥15 关于并联谐振电磁感应加热
  • ¥60 请查询全国几个煤炭大省近十年的煤炭铁路及公路的货物周转量
  • ¥15 请帮我看看我这道c语言题到底漏了哪种情况吧!
  • ¥66 如何制作支付宝扫码跳转到发红包界面
  • ¥15 pnpm 下载element-plus
  • ¥15 解决编写PyDracula时遇到的问题