代码之家  ›  专栏  ›  技术社区  ›  nerdsley

如何从数据文件中正确加载3x3矩阵?

  •  2
  • nerdsley  · 技术社区  · 9 年前

    我正在做一个Tic Tac Toe项目,在该项目中,我导入了X和O的9个字符串:

    XOOXXOOXX
    

    然后我必须将其拆分,加载到3x3矩阵中,然后测试并看看谁赢得了比赛。我已经编写了加载文件并运行游戏的代码,如下所示:

    public static void main( String args[] ) throws IOException
    {
        Scanner importer = new Scanner(new File("testdata.dat"));
    
        int count = importer.nextInt();
        System.out.println(count + " games to test.");
    
    
        for(int i = 0; i < count; i++) {
            String game = importer.next();
    
            TicTacToe gamecalc = new TicTacToe();
    
            System.out.println(gamecalc.getWinner(game));
        }
    }
    

    然而,当我尝试加载已经建立的3x3矩阵时,如下所示:

    String gamedata = game; //gamedata is passed in, reassigned to game
    
    for(int line = 0; line < 2; line++) {
            for(int column = 0; column < 2; column++) {
    
            gamemat[line][column] = game.charAt(line * column);
    
            }
        }
    

    并且所述数据集是:

    abcdefghi
    jklmnopqr
    stuvwxyz1
    234567890
    ABCDEFGHI
    

    使用Arrays.toString打印时,结果是:

    [a, a,  ][a, b,  ][ ,  ,  ] //each line is one 3x3 matrix
    [j, j,  ][j, k,  ][ ,  ,  ]
    [s, s,  ][s, t,  ][ ,  ,  ]
    [2, 2,  ][2, 3,  ][ ,  ,  ]
    [A, A,  ][A, B,  ][ ,  ,  ]
    

    如何修改算法以正确加载矩阵?谢谢

    1 回复  |  直到 9 年前
        1
  •  0
  •   BretC    9 年前

    我觉得这句话不对。。。

    gamemat[line][column] = game.charAt(line * column);
    

    应该是。。。

    gamemat[line][column] = game.charAt(line * 3 + column);
    

    此外,您可能希望循环计数为3。。。

    for(line = 0; line < 3; line++)...