Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.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 如何在二维字符串数组中交换字符串的位置_Java_Arrays_Switch Statement - Fatal编程技术网

Java 如何在二维字符串数组中交换字符串的位置

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 =

我有作业要做一个定制版本的国际象棋,它是6x6,棋子以特定的方式移动。但现在我正试图找出如何选择一个片段,然后将其放置在我设置的2d数组中的另一个位置,并交换角色的位置。目前我有:

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是最终坐标。我不确定我是否真的在跟踪你。我忘了提到我在编程方面不是很有经验,所以如果您能稍微沉默一下,并详细解释一下,谢谢。。。对不起。