繁体   English   中英

如何遍历这个2D数组。 它适用于4x4,但除此之外没什么

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM