打印矩阵 java_Java面试_打印矩阵

Java面试_打印矩阵 按照上面图的要求打印矩阵,看一下要求,其实就是按照一定的规律遍历一个二维数组,首先向右走一个单位,然后向左下,直到边界,然后向下,右上知道边界。向右越界了就向下,向下越界了就向右,知道到达右下角。翻译成代码逻辑package swing;public class JuZhen {/*** @param args*/public static void main(String...
摘要由CSDN通过智能技术生成

Java面试_打印矩阵

0818b9ca8b590ca3270a3433284dd417.png

按照上面图的要求打印矩阵,看一下要求,其实就是按照一定的规律遍历

一个二维数组,首先向右走一个单位,然后向左下,直到边界,然后向下,

右上知道边界。向右越界了就向下,向下越界了就向右,知道到达右下角。

翻译成代码逻辑

package swing;

public class JuZhen {

/**

* @param args

*/

public static void main(String[] args) {

int n = 4;

// 二维数组填充器 返回填充的二维数组下标和填充的数字

IndexGen g = new IndexGen(n);

int[][] nums = new int[n][n];

while (g.haveNext()) {

IndexInfo index = g.next();

nums[index.d1][index.d2] = index.num;

}

// 打印内容

for (int i = 0; i < n; i++) {

for (int j = 0; j < n; j++) {

int pnum = nums[i][j];

String pnums = String.valueOf(pnum);

if (pnums.length() == 1)

pnums = " " + pnums;

System.out.print(pnums + " ");

}

System.out.println();

}

}

private static class IndexGen {

private IndexInfo currentIndex;

private int maxIndex;

private int count = 1;

private int totalNum;

private int flag = 1;

public IndexGen(int n) {

this.maxIndex = n - 1;

this.totalNum = n * n;

}

private boolean haveNext() {

if (count <= totalNum)

return true;

else

return false;

}

public IndexInfo next() {

// 起始状态

if (count == 1) {

currentIndex = new IndexInfo(0, 0);

currentIndex.num = count;

count++;

return currentIndex;

}

if (flag == 1) {

// 如果第二个下标达到最大值 向下 否则向右

if (currentIndex.isIndex2Max(maxIndex)) {

currentIndex = currentIndex.down();

} else

currentIndex = currentIndex.rigth();

flag++;

} else if

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值