【问题标题】:How do you scan a text file and convert it to a 2D char array?如何扫描文本文件并将其转换为 2D 字符数组?
【发布时间】:2020-04-01 19:25:35
【问题描述】:

我收到了文本文件,我正在尝试将它们转换为 2D 字符数组以供进一步使用。正在发生的事情是它似乎正在获取第一个索引并一遍又一遍地复制它,直到它达到 int 大小并且它认为只有一列。我也想知道它是否与 charAt 有关,因为我不熟悉它。

public static void main(String[] args) throws FileNotFoundException
    {
        System.out.println("Enter file path here!");
        Scanner input = new Scanner(System.in);
        File file = new File(input.nextLine());
        Scanner inputFile = new Scanner(file);
        int size = inputFile.nextInt();
        char[][] testBoard = new char[size][size];
        for (int i = 0; i < size; i++)
        {
            String line = inputFile.next();
            for (int j = 0; j < size; j++)
            {
                testBoard[i][j]= line.charAt(i);
                System.out.println(testBoard[i][j]);
            }
        }

给出的文件示例是

4
BQBB
BBBQ
QBBB
BBQB

请帮助它弄乱我的代码!

【问题讨论】:

    标签: java arrays multidimensional-array n-queens charat


    【解决方案1】:

    代替testBoard[i][j]= line.charAt(i); 试试testBoard[i][j]= line.charAt(j);

    【讨论】:

    • 这可能已经解决了问题,我正在处理中,谢谢!
    【解决方案2】:

    您不需要两个循环。编写循环如下:

    for (int i = 0; i < size; i++) {
        String line = inputFile.nextLine();
        testBoard[i] = line.toCharArray();
    }
    

    请注意,Java 中的二维数组是数组的数组。因此testBoard[0] 应该被分配{'B', 'Q', 'B', 'B'}testBoard[1] 应该被分配{'B', 'B', 'B', 'Q'} 等等。这就是这个循环正在做的事情。

    如有任何疑问/问题,请随时发表评论。

    【讨论】:

    • 好的.. 但是 testBoard 已经被定义为一个二维数组,它还会是吗?
    • @cb-9099 - 是的……我已经解释过了。疑点在哪里?
    • 好吧,我为 testBoard 声明了一个 2D 数组,但当我尝试编译它时它不太喜欢它。现在好了,虽然我相信问题已经解决了!感谢您的帮助!
    • @cb-9099 - 此代码编译并完美运行。看来您无法可视化二维数组。我建议您通过一些教程来了解 Java 2-D 数组。如果你想让我解释,我可以用一张图帮助你理解这个概念。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    • 1970-01-01
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    • 2016-06-20
    • 2017-12-12
    相关资源
    最近更新 更多