Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将1D数组转换为2D数组以进行循环处理_Java_Arrays_For Loop_Processing - Fatal编程技术网

Java 将1D数组转换为2D数组以进行循环处理

Java 将1D数组转换为2D数组以进行循环处理,java,arrays,for-loop,processing,Java,Arrays,For Loop,Processing,在我的计算机科学课上,我正在用处理技术做一个井字游戏。在我的程序中,我正在编码一个3英寸的行检查器,我正在尝试使用2D数组代码进行编码,因为在编码X/O时,我的数组被初始化为2D数组。此外,我的老师给了我们一个在一维数组中执行此代码的示例,所以我不知道如何把他关于FOR循环的例子转换成2D,这样就可以在我的程序上运行。我已经将数组代码转换为应用于我的程序,它正在运行,但是关于是否有人赢了的循环代码不起作用。有人能帮我吗 void onlyX() { //views only X pieces,

在我的计算机科学课上,我正在用处理技术做一个井字游戏。在我的程序中,我正在编码一个3英寸的行检查器,我正在尝试使用2D数组代码进行编码,因为在编码X/O时,我的数组被初始化为2D数组。此外,我的老师给了我们一个在一维数组中执行此代码的示例,所以我不知道如何把他关于FOR循环的例子转换成2D,这样就可以在我的程序上运行。我已经将数组代码转换为应用于我的程序,它正在运行,但是关于是否有人赢了的循环代码不起作用。有人能帮我吗

void onlyX() { //views only X pieces, runs checker for onlyX (attempted to 
convert to 2D array form)
    for (int i=0; i<3; i++) {
      for (int j=0; j<3; j++) {
        if (boardPiece[i][j] == "X") {
          onlyXPiece[i][j] = "X";
        }
      }
    }
  }

  /*void onlyX() { //1D Form 
    for (int i=0; i<numberOfBoardPieces; i++) {
      if (boardPiece[i] == "X") {
        onlyXPiece[i] = "X";
      }
    }
  }*/

void onlyO() { //views only O pieces, runs checker for onlyO (attempted to 
convert to 2D array form)
   for (int i=0; i<3; i++) {
     for (int j=0; j<3; j++) {
       if (boardPiece[i][j] == "O") {
         onlyOPiece[i][j] = "O";
        }
      }
    }
  }

  /*void onlyO() { //1D form
    for (int i=0; i<numberOfBoardPieces; i++) {
      if (boardPiece[i] == "O") {
        onlyOPiece[i] = "O";
      }
    }
  }*/

通常称为双FOR循环的2D FOR循环数组看起来不错,但我不太明白为什么要将X和O放置在单独的2D数组中。有多种方法可以检查获胜条件,但这似乎过于复杂

我修改了代码顶部的double for循环,以执行一个win检查,该检查易于理解,并且对X和O都可用。不要忘记,您还必须检查垂直和对角赢

String[][] boardPiece = {{"X", "", "O"}, 
                         {"O", "O","O"}, 
                         {"X", "", "X"}};

void setup() {
  println("X wins = "+ str(checkRows("X")));
  println("O wins = "+ str(checkRows("O")));
}

boolean checkRows(String XorO) { 
  for (int i=0; i<3; i++) { //for every row
    boolean win = true;     //set win to true
    for (int j=0; j<3; j++) { //for every column    
      if (boardPiece[i][j] != XorO) {  //if the column does not equal the sign that you are checking
        win = false;                   // meaning its the other, or it's empty, then set win to false
      }                                
    }
    if (win) {
      return true;    //if win is true, then there are 3 X's or 3 O's in this row, so return true
    }
  }
  return false;      // if none of the rows contain 3 equal, return false
}

通常称为双FOR循环的2D FOR循环数组看起来不错,但我不太明白为什么要将X和O放置在单独的2D数组中。有多种方法可以检查获胜条件,但这似乎过于复杂

我修改了代码顶部的double for循环,以执行一个win检查,该检查易于理解,并且对X和O都可用。不要忘记,您还必须检查垂直和对角赢

String[][] boardPiece = {{"X", "", "O"}, 
                         {"O", "O","O"}, 
                         {"X", "", "X"}};

void setup() {
  println("X wins = "+ str(checkRows("X")));
  println("O wins = "+ str(checkRows("O")));
}

boolean checkRows(String XorO) { 
  for (int i=0; i<3; i++) { //for every row
    boolean win = true;     //set win to true
    for (int j=0; j<3; j++) { //for every column    
      if (boardPiece[i][j] != XorO) {  //if the column does not equal the sign that you are checking
        win = false;                   // meaning its the other, or it's empty, then set win to false
      }                                
    }
    if (win) {
      return true;    //if win is true, then there are 3 X's or 3 O's in this row, so return true
    }
  }
  return false;      // if none of the rows contain 3 equal, return false
}

要检查是否有人赢得了比赛,您必须检查列、行和对角线。编写一个带有一个参数的checkBoard函数,其中可以指定要检查的工件X pr O的类型:

布尔校验板字符串p{ 布尔值=false; //检查行和列
对于int i=0;!won&&i要检查是否有人赢了游戏,必须检查列、行和对角线。编写一个带有一个参数的checkBoard函数,其中可以指定要检查的棋子X pro的类型:

布尔校验板字符串p{ 布尔值=false; //检查行和列
对于int i=0;!won&&i这是什么语言?@gblodget这是Java处理中的语言?@gblodget这是Java处理中的语言?@gblodget这是Java处理中的语言谢谢你的回答,这意味着很多。我只是想知道当你定义boardpiece时这三个括号是什么,它们是什么意思?这是一种实例化数组的简单方法:-String[]是字符串数组String[]]是字符串的2D数组。{a,b}用条目a和b填充数组。感谢您的回复,现在我知道了Boardstock是什么,要使其工作,我需要根据放置的X和O使括号填充自己。正确。类似于:如果鼠标单击位于顶部中间瓷砖的区域,请将X放入Boardstock[0][1]谢谢你对我的问题的帮助,我现在有一个功能齐全的基本井字游戏。我现在进入游戏的人工智能部分,希望我不会遇到任何麻烦,我会尝试自己解决我的问题。如果我确实需要帮助,我会在这里张贴希望,非常感谢你的帮助!:谢谢你的回复,这意味着很多。我只是想知道,当你定义boardpiece时,这三个括号是什么,它们是什么意思?这是实例化数组的一种简单方法:-String[]是字符串数组String[][]是字符串的2D数组。{a,b}用条目a和b填充数组。感谢您的回复,现在我知道了Boardstock是什么,要使其工作,我需要根据放置的X和O使括号填充自己。正确。类似于:如果鼠标单击位于顶部中间瓷砖的区域,请将X放入Boardstock[0][1]感谢您对我的问题的帮助,我现在有了一个功能齐全的基本井字游戏。我现在将进入游戏的AI部分,希望我不会遇到任何麻烦,我将尝试自己解决我的问题。如果我确实需要帮助,我将在这里发布希望,非常感谢您的帮助!: