2D阵列显示

时间:2016-04-25 15:08:26

标签: java arrays

这个问题与我的2D数组显示有关,目前看起来像这样。

paramtemp = as<NumericVector>(wrap(param));
cube LL(paramtemp.begin(),mm,n,g); 

我正在尝试将位置(0,0)更改为数字1,因为这将是我的计数的开始。

然而,它不会改变并保持为零,这是我的代码。

    A B C D
 1: 0 0 0 0
 2: 0 0 0 0 
 3: 0 0 0 0 

现在,这使我的坐标(o,o)显示为零,但是如果我改变它     chessBoard [0] [0] = 1; 对此     chessBoard [1] [0] = 1;

然后网格确实相应地改变

int[][] chessBoard = new int[3][4];                                                                                 
int rowhead = 1;                                                                                                    
    TextIO.put("  ");                                                                                               
for (int col = 0; col < chessBoard[0].length; col++)                                                                
    TextIO.putf("%4s",((char) ('A' + col)));                                                                        
    TextIO.putln();                                                                                                 

for (int [] row:chessBoard){                                                                                        
    TextIO.put(rowhead++ + ":");                                                                                    
for (int griddisplay:row)                                                                                       
    TextIO.putf("%4d", griddisplay);                                                                                
    TextIO.putln();                                                                                                 
    chessBoard [0][0] = 1;

我哪里错了?

3 个答案:

答案 0 :(得分:1)

您的代码运行正常,我只添加了一些方法并更改了输出

public class Chessboard
{

    public static void main(String[] args)
    {
        int[][] chessBoard = new int[3][4];                                                                                                                                                                                    

        print(chessBoard);

        chessBoard [0][0] = 1;
        print(chessBoard);

        chessBoard [1][0] = 1;
        print(chessBoard);

        clear(chessBoard);
        print(chessBoard);
    }

    public static void print(int[][] chessBoard)
    {
        int rowhead = 1; 
        System.out.print("\n  ");                                                                                               
        for (int col = 0; col < chessBoard[0].length; col++)
            System.out.printf("%4s",((char) ('A' + col)));                                                                      
        System.out.println();                                                                                                

        for (int[] row : chessBoard)
        {
            System.out.print(rowhead++ + ":");                                                                                    
            for (int griddisplay : row)                                                                                       
                System.out.printf("%4d", griddisplay);                                                                                
            System.out.println();                                                                                                 
        }
        System.out.println();
    }

    public static void clear(int[][] chessBoard)
    {
        for (int row = 0; row < chessBoard.length; row++)
            for(int col = 0; col < chessBoard[row].length; col++)
                chessBoard[row][col] = 0;
    }

}

答案 1 :(得分:0)

chessBoard [0][0] = 1;移到TextIO.put(rowhead++ + ":");

下方
int[][] chessBoard = new int[3][4];
    int rowhead = 1;
    TextIO.put("  ");
    for (int col = 0; col < chessBoard[0].length; col++)
        TextIO.putf("%4s",((char) ('A' + col)));
    TextIO.putln();

    for (int [] row:chessBoard) {
        TextIO.put(rowhead++ + ":");
        chessBoard[2][3] = 1;
        for (int griddisplay : row){
            TextIO.putf("%4d", griddisplay);
        }
        TextIO.putln();
    }

它将有效地工作=)。

答案 2 :(得分:-1)

您似乎有一些格式问题,但要从它的要点:

您正在将棋盘构建为阵列[3] [4],并通过它的外观来构造3&#39;行&#39;和4&#39;列&#39;所以你的第一个索引是你的行号,第二个是列号。

你循环通过第一行&#39;得到长度(4)所以输出4列 - 正确的我假设。

然后你开始打印棋盘(虽然我没有看到匹配的大括号})。首先,您跨行,然后跨列循环。

例如:

for (int [] row:chessBoard) {                                                                                        
    TextIO.put(rowhead++ + ":");                                                                                    
    for (int griddisplay:row)                                                                                      
        TextIO.putf("%4d", griddisplay);                                                                                
    TextIO.putln();                                                                                              
    chessBoard [0][0] = 1;
}

如果这是您的代码,则第一个循环开始处理第一行。它循环遍历第一行的列,然后将[0] [0]设置为1 ......但是您已经打印过,因此无法显示。如果用[1] [0]替换它,它实际上设置了在打印第二行之前正确显示值。

作为最后一个提示,花括号指定for循环的范围。如果省略大括号,则循环仅在其后立即运行语句。许多程序员习惯的习惯是始终明确使用大括号来避免容易出错。