Java 二维数组与用户输入

Java 二维数组与用户输入,java,arrays,user-input,Java,Arrays,User Input,我很好奇是否有一种方法可以使用scanner类来获取初始化数组中的行和列的用户输入 例如,如果您有一个三乘三的数组,并且希望用户选择要转到的行和列 比如: Scanner input = new Scanner(System.in); int[][] arrayOfChoice = new int[][]; int user = arrayOfChoice[input.nextInt()][input.nextInt] = some value 我还没有尝试过这个,但我怀疑它是否有效,但希

我很好奇是否有一种方法可以使用scanner类来获取初始化数组中的行和列的用户输入

例如,如果您有一个三乘三的数组,并且希望用户选择要转到的行和列

比如:

Scanner input = new Scanner(System.in);

int[][] arrayOfChoice = new int[][];

int user = arrayOfChoice[input.nextInt()][input.nextInt] = some value
我还没有尝试过这个,但我怀疑它是否有效,但希望它能让我知道我在寻找什么,如果有办法做到这一点,我将非常高兴听到它

编辑

让我试着澄清一下我想做什么

import java.util.Scanner;
import java.util.Arrays;

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

        int[][] arrayHu = new int[3][3];

        System.out.println("please enter the row and colum you would like to fill:");

        int[input.nextInt();][input.nextInt();] = 1;

        System.out.println(Arrays.toString(arrayhu));
    }
}

类似于这样,用户可以输入要将值1放入的行和列。我该怎么做,谢谢你

是的,你可以这样做,但只能在try-catch语句中。 你写的最后一行也是错的

int user = arrayOfChoice[input.nextInt()][input.nextInt()] = some_value

一些_值将同时分配给数组和用户

它确实起作用,但您的代码有点问题。下线

int[][] arrayOfChoice = new int[][];
无法工作,因为您需要初始化数组或为其提供维度

int[][] arrayOfChoice = new int[3][3];
int[][] arrayOfChoice = new int[][]{{0, 0, 0}, {0, 0, 0}, {0, 0, 0}};
最后一行:

int user = arrayOfChoice[input.nextInt()][input.nextInt] = some value
用户输入的两点处的变量user和索引都将等于“某个值”。我不确定这是否是你想要达到的目标

此外,我还要提醒用户的输入可能无效(非数字、超出数组边界等),这将导致程序崩溃。可能使用try-catch块(因为这意味着用户将只在try-catch块内定义,我将它移到了外部)

为井字游戏编辑:

我所说的一切仍然适用。有很多方法可以做到这一点,但这里有一个例子

1.创建转向计数器、扫描仪和电路板

int turn = 0;
int[][] board = new int[3][3];
Scanner input = new Scanner(System.in);
2.创建while循环,打印电路板并请求用户输入:

for(int[] i : board)
{
    for(int j : i)
    {
        System.out.print(j + " ");
    }
    System.out.println();
}
System.out.println("Enter an x and y value:");
3.从用户处获取输入:

board[input.nextInt()][input.nextInt()] = ((turn % 2) == 0 ? 2 : 1);
4.创建功能,检查电路板是否成功,如果发现,则中断环路。一半可以写在下面,但对角线也必须检查

/*Check row and column.*/
for(int i = 0; i < 3; i++)
{
    if((board[i][0] == board[i][1] && board[i][0] == board[i][2] && board[i][0] != 0) || 
        (board[0][i] == board[1][i] && board[0][i] == board[2][i] && board[0][i] != 0))
    {
        return true;
    }
}
6.关闭扫描仪

input.close();

你为什么不试试这个?你为什么怀疑它有效?那你试过什么?好吧,我明白你的意思了,让我再详细说明一下我想做什么。我正在和领事做一个滴答答的游戏。因此,我希望用户选择一个相关的行和列,然后在代码的其余部分标记x或o,例如,我会有一个系统打印,上面写着选择行和列,这将是保存信息的相关数组[0][2],类似的东西会在第三个框中标记x
System.out.println("Player " + ((turn % 2) == 0 ? 2 : 1) + " is the winner!");
input.close();