繁体   English   中英

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

[英]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 因为它将在内部循环运行时重新初始化。

所以你的最终代码看起来像: -

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 因此,当该循环返回时, l被删除。

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

...
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);
    }
}
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM