当前位置: 首页 > 知识库问答 >
问题:

魔方程序Java数组

杨研
2023-03-14

我想编程一个魔术广场,其中数组的利用率是在地方,但当我想运行它,它显示异常在线程"main"java.lang.ArrayIndexOutOfBoundsException: 0在MagicSquare.main(MagicSquare.java: 6)我该怎么办?它会显示

4   9   2        7 1 6
3   5   7  not   3 5 7
8   1   6        4 9 2 



public static void main(String[] args) { 
    Scanner input = new Scanner (System.in);

    int n = Integer.parseInt(args[3]);
    if (n % 2 == 0) throw new RuntimeException("n must be odd");

    int[][] magic = new int[n][n];

    int row = n-1;
    int col = n/2;
    magic[row][col] = 1;


    for (int i = 2; i <= n*n; i++) {
        if (magic[(row + 1) % n][(col + 1) % n] == 0) {
            row = (row + 1) % n;
            col = (col + 1) % n;
        }
        else {
            row = (row - 1 + n) % n;

        }
        magic[row][col] = i;
    }


    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (magic[i][j] < 10)  System.out.print(" ");  
            if (magic[i][j] < 100) System.out.print(" ");  
            System.out.print(magic[i][j] + " ");
        }
        System.out.println();
    }

}

我还应该从这个程序中添加或删除什么?

共有1个答案

蔚琦
2023-03-14

根据您的程序,运行时需要提供4个参数。例如:如果类名为Test:

java Test 1 1 1 3

结果:

  4   9   2
  3   5   7
  8   1   6
 类似资料:
  • 实际上MATLAB提供了一个函数可以计算出任意规格的魔方矩阵,毫不奇怪,这个函数就是magic. B = magic(4) B = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 与刻在杜勒的木板上的那个矩阵差不多一样,具有相同的性质。

  • 所以我试图摆脱我主要方法中的两个神奇数字。我试着让它们成为静态字段,但我只是得到了一个不同的checkstyle错误。我正在寻找一种方法,使我的主要方法完全符合checkstyle。 这些是我得到的检查风格错误: '2000'是个神奇的数字 “262”是一个神奇的数字 以下是我将其设置为静态字段时出现的checkstyle错误: 名称“Twoou”必须与模式“^[A-Z][A-Z0-9]*([A-

  • 介绍 魔方+是魔方加密为高级开发者提供的增值服务。 魔方+主要适合于: 企业开发者 需要经常进行加密的开发者 Discuz! 模板开发者 希望使用经过长时间线上考验的 Panda · 第一代加密引擎的开发者 希望使用文件认证模板功能的开发者 其它希望购买魔方+的开发者 购买魔方+后,在服务期限内: 加密文件不收取费用 可以加密 Discuz! 模板 可以选用 Panda 和 Crane 两套加密引

  • 我正在尝试处理我用tesseract录制的黑板图像,但运气不好。我想过做预处理来帮助提高我们的结果,但不确定该用什么方法来调用它。 这是我拥有的图像: 下面是我正在运行的< code>tesseract命令: 请注意,它不必正确处理所有数学符号,但至少要得到,也许。 我以前有一张照片,只用这些命令就能很好地工作。照片如下: 下面是它会产生的结果: 这并不完美,但比我以前得到的要好得多。如何提高新黑

  • 问题内容: 我正在使用以下代码测试集合: 我不明白为什么删除“ b”可以,但是其他NG? 问题答案: 首先要知道的是(如JLS所述)以下增强的for循环: 等效于: 如果查看中的迭代器的实现,您将看到: 不检查并发修改,仅使用大小检查我们是否在列表的末尾: 首先要做的是调用以查看在迭代过程中列表是否被修改: 因此,当您迭代并删除列表的倒数第二个元素时,下一条指令将是对的调用,该调用将返回,因为删除

  • 3G魔盘WAP网址导航程序。 2010/1/1 v1.1 beta 细节更新、优化并开放源码。注意,修改了防刷,正在完善中,有意者一起讨论。另附SQL2005数据库和SQL2000的SQL的建表语句。使用请自行选 择! 2009/8/14 魔盘导航当前更到版本v1.0 beta,是由飞沙在线(feisha.cn)和3G魔盘网(3gmp.net)共同打造,提供的一套共享免费的WAP网址导航程序。此次