Java 将1D数组转换为2D数组以进行循环处理
在我的计算机科学课上,我正在用处理技术做一个井字游戏。在我的程序中,我正在编码一个3英寸的行检查器,我正在尝试使用2D数组代码进行编码,因为在编码X/O时,我的数组被初始化为2D数组。此外,我的老师给了我们一个在一维数组中执行此代码的示例,所以我不知道如何把他关于FOR循环的例子转换成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,
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部分,希望我不会遇到任何麻烦,我将尝试自己解决我的问题。如果我确实需要帮助,我将在这里发布希望,非常感谢您的帮助!: