首页 > 解决方案 > 使用 Java 对 Magic Square 进行 3x3 2D 数组测试

问题描述

所以我得到了一个任务来编写一个程序来检查一个正方形是否是一个幻方,如果是,就打印它的幻数。

如果正方形确实是幻方,我编写的代码就可以工作,但是当用户键入的数字不是幻方时,它不会给出“错误”消息。

输出是它应该的样子,当它是一个幻方时,但当它不是时,输出总是幻数:0。

这是代码:

import java.util.Scanner;

public class MagischesQuadrat {

    public static void main(String[] args) {
        int [][] square = new int[3][3];
        Scanner keyScan = new Scanner(System.in);

        // Read in square
        System.out.println("Please enter 9 numbers and confirm with Enter");
        for (int i=0; i<3; i++) {
            for (int j=0; j<3; j++) {
                square[i][j] = keyScan.nextInt();
            }
        }

        boolean magic = true;
        int magicNum = 0;
        
        
        // TODO: Check the square and set the variables magic and magic number to the correct value.
        int a = square[0][0] + square[0][1] + square[0][2];
        int b = square[1][0] + square[1][1] + square[1][2];
        int c = square[2][0] + square[2][1] + square[2][2];
        
        int d = square[0][0] + square[1][0] + square[2][0];
        int e = square[0][1] + square[1][1] + square[2][1];
        int f = square[0][2] + square[1][2] + square[2][2];
        
        if (a == b && a == c && a == d) {
            magic = true;
            magicNum = a;
        }
        
        // Output of the result
        if (magic) {
            System.out.println("Magic number: "+magicNum);
        } else {
            System.out.println("Not magic");
        }
        keyScan.close();
    }
}

标签: java

解决方案


代替:

if (a == b && a == c && a == d) {
    magic = true;
    magicNum = a;
}

和:

magic = a == b && a == c && a == d;
magicNum = a;

推荐阅读