Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.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_Methods - Fatal编程技术网

Java 如何从方法返回二维数组索引?

Java 如何从方法返回二维数组索引?,java,arrays,methods,Java,Arrays,Methods,我正在从这里创建一个tic-tac-toe程序: 我很难找到如何从方法返回数组索引。我想用户输入2个整数,(行,列),并返回该索引,并有char“o”或“x”替换空白对应的索引。 我对java有点陌生,我正在努力以尽可能快和高效的方式学习它,以便在我的课堂上迎头赶上 import java.util.Scanner; public class ticTacToe{ public static Scanner in = new Scanner(System.in); priva

我正在从这里创建一个tic-tac-toe程序:

我很难找到如何从方法返回数组索引。我想用户输入2个整数,(行,列),并返回该索引,并有char“o”或“x”替换空白对应的索引。 我对java有点陌生,我正在努力以尽可能快和高效的方式学习它,以便在我的课堂上迎头赶上

import java.util.Scanner;

public class ticTacToe{
    public static Scanner in = new Scanner(System.in);
    private static int r, c;
    private static char[][] board = new char[3][3];
    //create a 3x3 array of characters

    public static void main( String[] args ) {
        Scanner in = new Scanner(System.in);

        displayBoard();
        do{
            // user inputs two numbers as indexes
            //turn index into "o"
            //prompt other user to make move, repeat with "x"

        }while(checkLoser());

    }

    public static void displayBoard() {
        System.out.println("  0  " + board[0][0] + "|" + board[0][1] + "|" + board[0][2]);
        System.out.println("    --+-+--");
        System.out.println("  1  " + board[1][0] + "|" + board[1][1] + "|" + board[1][2]);
        System.out.println("    --+-+--");
        System.out.println("  2  " + board[2][0] + "|" + board[2][1] + "|" + board[2][2]);
        System.out.println("     0 1 2 ");
    }

    public static int[] getArrayIndex(){
        System.out.println("'O'. Choose your Row...(row, column)");
        int r = in.nextInt();
        int c = in.nextInt();
        return new int[] {r,c};
    }

    public static void userMove(int[][] ){
        board[r][c] = 'O';
    }

    public static boolean checkLoser(){
            if (board[0][0] == board[0][1]){
            if (board [0][1] == board[0][2]){
                return false;
            }
            }
            else if (board[1][0] == board[1][1]){
            if (board [1][1] == board[1][2]){
                return false;
            }
            }
            else if (board[2][0] == board[2][1]){
            if (board [2][1] == board[2][2]){
                return false;
            }
            }
            else if (board[0][0] == board[1][0]){
            if (board [1][0] == board[2][0]){
                return false;
            }
            }
            else if (board[0][1] == board[1][1]){
            if (board [1][1] == board[1][2]){
                return false;
            }
            }
            else if (board[0][2] == board[1][2]){
            if (board [1][2] == board[2][2]){
                return false;
            }
            }

            else if (board[0][0] == board[1][1]){
            if (board [1][1] == board[2][2]){
                return false;
            }
            }
            else if (board[0][2] == board[1][1]){
            if (board [1][1] == board[2][0]){
                return true;
            }
            }else{
                return false;
            }

    }

}

Java实现这一点的方法是定义一个类来保存行和列索引

final class BoardIndex {

    final int row;
    final int col;

    BoradIndex(final int r, final int c) {
        this.row = r;
        this.col = c;
    }
}
然后可以从函数返回它

BoardIndex getIt() {
    return new BoradIndex(1, 2);
}

这需要相当多的类型,但许多Java人员更喜欢这种类型的明确性,而不是使用整数数组。

Java的方法是定义一个类来保存行和列索引

final class BoardIndex {

    final int row;
    final int col;

    BoradIndex(final int r, final int c) {
        this.row = r;
        this.col = c;
    }
}
然后可以从函数返回它

BoardIndex getIt() {
    return new BoradIndex(1, 2);
}

这需要相当多的类型,但许多Java用户更喜欢这种类型的显式,而不是使用整数数组。

好吧,为了回答您的问题,因为它是一个二维数组,显然需要返回两个索引(正如您可能想的那样)。由于函数只能返回一个对象,正如您在给定函数时所想的那样:

public static int[] getArrayIndex(){
        System.out.println("'O'. Choose your Row...(row, column)");
        int r = in.nextInt();
        int c = in.nextInt();
        return new int[] {r,c};
    }
您返回了一个包含两个所需索引的两元素数组。这是你实现它的一种方法。其他形式包括创建一个包含两个int元素的对象并使用它,或者以某种方式将两个变量存储在同一个int中(例如,保持它们的长度为一位数)。 不管怎样,你返回这些指数的方法是正确的。你如何使用这些信息取决于你自己。我想您必须将其存储在一个临时的int数组中,如下所示
int[]temp=getArrayIndex()
然后访问每个元素以获得相应的索引

但是,您的代码还存在其他错误,例如忘记在此函数中为参数命名(或者无论如何都不使用此参数):


我建议你检查一下。也许你编译的程序给了你一个错误,你认为这是因为
新的int[]{r,c}
的东西,但是naaah,这是可行的。如果是这样的话,检查一下其他的,那是另外一回事。不过我很乐意帮忙,所以尽管问吧^^

好吧,为了回答您的问题,因为它是一个二维数组,您显然需要返回两个索引(正如您可能认为的那样)。由于函数只能返回一个对象,正如您在给定函数时所想的那样:

public static int[] getArrayIndex(){
        System.out.println("'O'. Choose your Row...(row, column)");
        int r = in.nextInt();
        int c = in.nextInt();
        return new int[] {r,c};
    }
您返回了一个包含两个所需索引的两元素数组。这是你实现它的一种方法。其他形式包括创建一个包含两个int元素的对象并使用它,或者以某种方式将两个变量存储在同一个int中(例如,保持它们的长度为一位数)。 不管怎样,你返回这些指数的方法是正确的。你如何使用这些信息取决于你自己。我想您必须将其存储在一个临时的int数组中,如下所示
int[]temp=getArrayIndex()
然后访问每个元素以获得相应的索引

但是,您的代码还存在其他错误,例如忘记在此函数中为参数命名(或者无论如何都不使用此参数):


我建议你检查一下。也许你编译的程序给了你一个错误,你认为这是因为
新的int[]{r,c}
的东西,但是naaah,这是可行的。如果是这样的话,检查一下其他的,那是另外一回事。不过我很乐意帮忙,所以尽管问吧^^

您是在谈论getArrayIndex()方法吗?如果是这样的话,那么目前的方式有什么问题?毫无疑问,你可能会发现使用9个元素的标准阵列比使用二维阵列更容易编写Tictatcoe游戏。嗨,贾斯汀。您说过要从方法返回数组索引。数组索引只是一个int,从一个函数返回索引(在该函数中您得到了索引)就是简单地将输入返回给该方法。你的描述可能会混淆。数组具有索引和值多维数组也具有数组值
int[]foo={{0,1,2},{3,1,4},{1,1,2}
是一个包含9个条目的二维数组。当访问二维数组中的值时,即首先引用的是foo[]的索引1处的数组,然后是
foo[1]
的索引2处的int,即4。您在谈论getArrayIndex()方法吗?如果是这样的话,那么目前的方式有什么问题?毫无疑问,你可能会发现使用9个元素的标准阵列比使用二维阵列更容易编写Tictatcoe游戏。嗨,贾斯汀。您说过要从方法返回数组索引。数组索引只是一个int,从一个函数返回索引(在该函数中您得到了索引)就是简单地将输入返回给该方法。你的描述可能会混淆。数组具有索引和值多维数组也具有数组值
int[]foo={{0,1,2},{3,1,4},{1,1,2}
是一个包含9个条目的二维数组。当访问二维数组中的值时,即首先引用的是foo[]的索引1处的数组,然后是
foo[1]
的索引2处的int,通常我同意,但是这门单独的课程对像OP这样的初学者来说并没有多大帮助。@Robert我必须承认,我有点匆忙地发布了这个答案,而没有真正理解OP“遇到了什么问题”。因此,我不确定我的答案中应该添加哪些内容以使其更有用。OP提供的更多信息会有帮助。一般来说,我同意,但这门单独的课程对OP这样的初学者来说没有多大帮助。@Robert我必须承认,我在没有真正理解OP“遇到问题”的原因的情况下,匆忙发布了这个答案。因此,我不确定我的答案中应该添加哪些内容以使其更有用。OP提供的更多信息将很有帮助。