【问题标题】:Java: taking char input from array results in infinite loopJava:从数组中获取字符输入会导致无限循环
【发布时间】:2018-03-31 01:31:48
【问题描述】:

这是我要解决的问题的链接:https://dmoj.ca/problem/dmopc14c1p5

这是我为接收输入而编写的代码。

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

        int y = kbd.nextInt(); //number of rows
        int x = kbd.nextInt(); //number of columns
        int initX = kbd.nextInt(); //initial starting position
        int initY = kbd.nextInt();
        int endX = kbd.nextInt(); //ending position (main office)
        int endY = kbd.nextInt();

        char [] [] maze = new char [y][x];

        for (int i = 0; i < y; i++)
        {
            for (int j = 0; j < x; j++)
            {
                maze[i][j] = kbd.next().charAt(0);
            }
        }

        //For checking
        for (int i = 0; i < y; i++)
        {
            for (int j = 0; j < x; j++)
            {
                System.out.print(maze[i][j]);
            }
            System.out.println();
        }


    }

但是,我不知道如何在 for 循环中正确接收字符输入。我使用了通过此链接 (How to take input for 'char' array in Java?) 找到的scanner.next().charAt(0) 方法,但它会导致一个无限循环,无论我输入多少字符都不会结束。

我做错了什么?

更新:

这是我将收到的输入(字符之间没有空格):

OOXOO
OXOXO
OOOXX
XOXOX
OOOOO

我应该如何修改我的代码以使读取此输入成为可能?

【问题讨论】:

    标签: java arrays char


    【解决方案1】:

    您的代码可以正常工作。请记住,您需要输入至少 x*y(您的变量名)次的 char。

    编辑:我刚刚看到你的更新。我们需要考虑一下。

    .charAt(0)
    

    只取字符串的第一个字符并返回它。如果你想把 "ooxoo" 变成 ['o','o','x','o','o'],你可以对字符串使用 toCharArray 方法。但是,如果您这样做,您的 for 循环将比需要的循环时间更长。如果你知道你的输入集,你只能遍历 n 个字符串并接受它们并将它们转换为数组。如果您希望我更详细地介绍,请告诉我。

    【讨论】:

      【解决方案2】:

      java.util.Scanner.next() 方法查找并返回下一个 来自此扫描仪的完整令牌。

      每次调用 kbd.next().charAt(0) 时,都会调用 next() 并获得一个完整的令牌。默认情况下,标记由空格分隔。

      您还需要在 System.in 使数据可用之前按 ENTER。

      因此,请输入以空格分隔的字符并以回车结束输入。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-18
        • 2012-07-04
        • 1970-01-01
        • 1970-01-01
        • 2014-12-28
        • 2021-01-07
        • 2021-12-20
        • 2021-08-03
        相关资源
        最近更新 更多