Java 如何在二维字符串数组中交换字符串的位置
我有作业要做一个定制版本的国际象棋,它是6x6,棋子以特定的方式移动。但现在我正试图找出如何选择一个片段,然后将其放置在我设置的2d数组中的另一个位置,并交换角色的位置。目前我有:Java 如何在二维字符串数组中交换字符串的位置,java,arrays,switch-statement,Java,Arrays,Switch Statement,我有作业要做一个定制版本的国际象棋,它是6x6,棋子以特定的方式移动。但现在我正试图找出如何选择一个片段,然后将其放置在我设置的2d数组中的另一个位置,并交换角色的位置。目前我有: public class Chess { static final int rows = 7; static final int columns = 7; public static void main(String[] args) { String[][] board =
public class Chess {
static final int rows = 7;
static final int columns = 7;
public static void main(String[] args) {
String[][] board = new String[rows][columns];
fillBoard(board);
enterMove();
}
public static void fillBoard(String[][] board){
for (int row = 0; row < 7; row++) {
for (int col = 0; col < 7; col++) {
board[row][col] = " X ";
outerShell(board);
pawns(board);
System.out.print(board[row][col]);
}
System.out.println();
}
}
public static void outerShell(String[][] board){
board[0][0] = " ";
board[0][1] = " A ";
board[0][2] = " B ";
board[0][3] = " C ";
board[0][4] = " D ";
board[0][5] = " E ";
board[0][6] = " F ";
board[1][0] = " 6 ";
board[2][0] = " 5 ";
board[3][0] = " 4 ";
board[4][0] = " 3 ";
board[5][0] = " 2 ";
board[6][0] = " 1 ";
}
public static void pawns(String[][] board){
//whitePawns
board[1][1] = "wDw";
board[1][2] = " wD";
board[1][3] = " wQ";
board[1][4] = " wK";
board[1][5] = " wM";
board[1][6] = " wDw ";
//blackPawns
board[6][1] = "bDw";
board[6][2] = " bM";
board[6][3] = " bK";
board[6][4] = " bQ";
board[6][5] = " bD";
board[6][6] = " bDw";
}
public static void enterMove(){
System.out.println("");
System.out.println("Select the piece you want to move(Example a1) if you want to quit enter: q");
Scanner gameInput = new Scanner(System.in);
String pieceSelect = gameInput.nextLine();
if(pieceSelect.equals("q")){
System.exit(0);
}
switch (pieceSelect){
case "a1":
}
System.out.println(" ");
System.out.println("Now select a finishing position for the piece to move to");
String piecePlace = gameInput.nextLine();
switch (piecePlace){
case "a2":
}
}
}
公共类象棋{
静态最终整数行=7;
静态最终整数列=7;
公共静态void main(字符串[]args){
字符串[][]板=新字符串[行][列];
填充板(板);
enterMove();
}
公共静态空白填充板(字符串[][]板){
用于(int行=0;行<7;行++){
for(int col=0;col<7;col++){
线路板[行][列]=“X”;
外壳(板);
典当(板);
系统输出打印(板[行][列]);
}
System.out.println();
}
}
公共静态void outerShell(字符串[][]板){
板[0][0]=“”;
董事会[0][1]=“A”;
板[0][2]=“B”;
董事会[0][3]=“C”;
板[0][4]=“D”;
董事会[0][5]=“E”;
董事会[0][6]=“F”;
董事会[1][0]=“6”;
董事会[2][0]=“5”;
董事会[3][0]=“4”;
董事会[4][0]=“3”;
董事会[5][0]=“2”;
董事会[6][0]=“1”;
}
公共静态无效典当(字符串[][]板){
//白卒
董事会[1][1]=“wDw”;
董事会[1][2]=“wD”;
董事会[1][3]=“wQ”;
董事会[1][4]=“wK”;
董事会[1][5]=“wM”;
董事会[1][6]=“wDw”;
//黑奴
董事会[6][1]=“bDw”;
董事会[6][2]=“bM”;
董事会[6][3]=“bK”;
董事会[6][4]=“bQ”;
董事会[6][5]=“bD”;
董事会[6][6]=“bDw”;
}
公共静态void enterMove(){
System.out.println(“”);
System.out.println(“如果要退出enter:q,请选择要移动的工件(示例a1”);
Scanner gameInput=新的扫描仪(System.in);
字符串pieceSelect=gameInput.nextLine();
如果(分段选择等于(“q”)){
系统出口(0);
}
开关(分段选择){
案例“a1”:
}
System.out.println(“”);
System.out.println(“现在为要移动的工件选择一个精加工位置”);
字符串piecePlace=gameInput.nextLine();
开关(零位){
案例“a2”:
}
}
}
在
enterMove()
部分中,我尝试使用开关执行此操作,但不知道如何交换数组中的两个位置。我不是一成不变地使用开关
,因为我不确定这是否可行。如果有人可以通过输入特定坐标(如a1)来生成此代码的版本选择bDw
,然后输入另一个坐标,用X
交换bDw
,我用它作为一个空格的指示符,如果可以解释的话,我将不胜感激。我以前做过一个国际象棋程序,我用来将所有棋子存储在一个数组中(这里是6x6数组)我使用索引值作为板坐标。
因此,当选择一个工件时,将调用一个函数来显示所选工件的有效移动
有效的移动可以存储在某个数组中,并且可以进行检查。然后只需交换数组本身中的值。问题是您需要跟踪棋子的当前位置。为此,您可能需要在Java中使用键值数据结构,如Map
。或者,您可以将初始位置(x,y)和最终位置(x,y)作为输入。当你完成后,你可以说:“将xx从aa移动到bb”。是的,我正在尝试做建议的第二件事,但不知道如何在代码中实现它。现在我想用imputs来交换输入的片段和输入的X的位置,这表明在我的程序中是空的。稍后,我可能需要更改一些事情,例如,当一个棋子被选中而不是敌人的棋子时,将其删除,如果一个棋子被输入到一个友方棋子上,则该棋子不是有效的移动。您可以从用户处获取两次整数输入作为初始位置。i、 e.一个用于x坐标,一个用于y坐标。稍后,您可以将此值用作线路板[x][y]来访问或更改线路板的值。您可以将典当的值复制到另一个变量中,并将board[x][y]设置为空字符串。用这个变量设置board[a][b]的值,其中a,b是最终坐标。我不确定我是否真的在跟踪你。我忘了提到我在编程方面不是很有经验,所以如果您能稍微沉默一下,并详细解释一下,谢谢。。。对不起。