如何使用不带空格的输入(扫描仪方法)填充二维数组

How to fill 2D array using input (scanner method) without spaces

我需要使用不带空格的输入来填充二维数组,因此为此我首先尝试使用 'String'。

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


public class TikTakToe {
    public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    
    char[][] TikTakToe = new char[3][3];
    System.out.print("Enter cells: ");
    String enter = scanner.next();
    for (int i = 0; i < TikTakToe.length; i++) {
        for (int j = 0, l = 0; j < TikTakToe[i].length && l < enter.length(); j++, l++) {
            TikTakToe[i][j] = enter.charAt(l);
        }
    }
    
    for (char[] chars : TikTakToe) {
        System.out.println(Arrays.toString(chars).substring(1).replaceFirst("]", 
        "").replace(", ", " "));
    }
}

}

Input: XOXOXOXOX
Output: 
X O X
X O X
X O X

这个解决变量'l'在外部'for'循环进入下一阶段后重置的问题。我该如何解决?

您应该在循环外初始化 int l = 0。当内部循环 运行.

时,它将是 re-initialized

因此您的最终代码如下所示:-

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


public class TikTakToe {
    public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    
    char[][] TikTakToe = new char[3][3];
    System.out.print("Enter cells: ");
    String enter = scanner.next();

    int l = 0;                    // initialize here

    for (int i = 0; i < TikTakToe.length; i++) {
        for (int j = 0; j < TikTakToe[i].length && l < enter.length(); j++, l++) {
            TikTakToe[i][j] = enter.charAt(l);
        }
    }
    
    for (char[] chars : TikTakToe) {
        System.out.println(Arrays.toString(chars).substring(1).replaceFirst("]", 
        "").replace(", ", " "));
    }
}

您的问题是您在嵌套的 for 循环中定义了变量 l。因此,当该循环 returns、l 被删除时。

您需要做的是在第一个循环之前定义 l,这样它的范围就是整个方法。

...
char[][] TikTakToe = new char[3][3];
System.out.print("Enter cells: ");
String enter = scanner.next();
int l = 0; // <-- **I moved the declaration here**
for (int i = 0; i < TikTakToe.length; i++) {
    for (int j = 0 /*removed the declaration from here*/; j < TikTakToe[i].length && l < enter.length(); j++, l++) {
        TikTakToe[i][j] = enter.charAt(l);
    }
}
...