这个问题与我的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;
我哪里错了?
答案 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循环的范围。如果省略大括号,则循环仅在其后立即运行语句。许多程序员习惯的习惯是始终明确使用大括号来避免容易出错。