[英]how to iterate through this 2D array. It works for a 4x4 but nothing beyond that
我无法正确填充5X5阵列并成功打印阵列。 两者都是方法。 一个4X4工作正常。
我尝试过以不同的方式重新编写代码,但没有成功
// assume I have defined everything else
private int[][] board = new int[4][4];
//variables and other stuff
private String title = "Layout";
private String[] images = {"_", "D", "H", "C", "S"};
private final int BLANK = 0;
private final int DIAMONDS = 1;
private final int HEARTS = 2;
private final int CLUBS = 3;
private final int SPADES = 4;
//if it helps i found a error with calling the method. it prints correctly but only partially.
这种方法有效
public void createBoardLayout1()
{
for (int i = 0; i < board.length; i++)
{
for (int j = 0; j < board[i].length; j++)
{
if (j % 2 == 0)
{
board[i][j] = DIAMONDS;
}
else
{
board[i][j] = BLANK;
}
}
}
System.out.println();
}
这是给我问题的方法
public void createBoardLayout4()
{
for (int i = 0; i < board.length; i++)
{
for (int j = 0; j < board[i].length; j++)
{
if (i == 0)
{
board[i][j] = CLUBS;
}
else if (i == 4)
{
board[i][j] = CLUBS;
}
if (j == 0)
{
board[i][j] = CLUBS;
}
else if (j == 4)
{
board[i][j] = CLUBS;
}
else if (i == 1)
{
board[i][j] = DIAMONDS;
}
else if (i == 3)
{
board[i][j] = DIAMONDS;
}
else if (j == 1)
{
board[i][j] = DIAMONDS;
}
else if (j == 3)
{
board[i][j] = DIAMONDS;
}
else if (i == 2)
{
board[i][j] = SPADES;
}
else if (j == 2)
{
board[i][j] = SPADES;
}
else
{
board[i][j] = BLANK;
}
}
}
System.out.println();
}
打印数组但不是我对createBoardLayout4()
期望的createBoardLayout4()
public void printBoard()
{
for (int i = 0; i < board.length; i++)
{
System.out.println();
for (int j = 0; j < board[i].length; j++)
{
if (board[i][j] == 0)
{
board[i][j] = BLANK;
System.out.print(images[BLANK] + " ");
}
else if (board[i][j] == 1)
{
board[i][j] = DIAMONDS;
System.out.print(images[DIAMONDS] + " ");
}
else if (board[i][j] == 2)
{
board[i][j] = HEARTS;
System.out.print(images[HEARTS] + " ");
}
else if (board[i][j] == 3)
{
board[i][j] = CLUBS;
System.out.print(images[CLUBS] + " ");
}
else if (board[i][j] == 4)
{
board[i][j] = SPADES;
System.out.print(images[SPADES] + " ");
}
}
}
System.out.println();
System.out.println();
}
createBoardLayout1
输出是:
D _ D _
D _ D _
D _ D _
D _ D _
createBoardLayout4
输出是:
C C C C C
C D _ _ C
C _ S _ C
C _ _ D C
C C C C C
createBoardLayout4
输出应该是:
C C C C C
C D D D C
C D S D C
C D D D C
C C C C C
我喜欢这种方法:你从外到内,将所有东西设置为比中心周围的当前方块小的类型
for(int s=2;s>=0;s--)
{
for (int i = 0; i < board.length; i++)
{
for (int j = 0; j < board[i].length; j++)
{
if(Math.abs(2-j)<s&&Math.abs(2-i)<s){
if(s==2){
board[i][j] = CLUBS;
}else if(s==1){
board[i][j] = DIAMONDS;
}else if(s==0){
board[i][j] = SPADES;
}
}
}
}
}
谢谢你,但我想通了。 这是新代码:
for (int i = 0; i < board.length; i++)
{
for (int j = 0; j < board[i].length; j++)
{
if (i == 0 || j == 0)
{
board[i][j] = CLUBS;
}
if (i == 4 || j == 4)
{
board[i][j] = CLUBS;
}
else if (i == 2 && j == 2) // work
{
board[i][j] = SPADES;
}
else if ((i > 0 && i < 4) && (j > 0 && j < 4))
{
board[i][j] = DIAMONDS;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.