繁体   English   中英

Java:从数组中获取字符输入会导致无限循环

[英]Java: taking char input from array results in infinite loop

这是我要解决的问题的链接: 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循环中正确接收char输入。 我使用通过此链接找到的scanner.next()。charAt(0)方法( 如何在Java中获取“ char”数组的输入? ),但是它导致无限循环,无论有多少个字符都不会结束我输入。

我究竟做错了什么?

更新:

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

OOXOO
OXOXO
OOOXX
XOXOX
OOOOO

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

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

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

.charAt(0)

仅采用字符串的第一个字符并返回它。 如果要使用“ ooxoo”并将其转换为['o','o','x','o','o'],则可以对字符串使用toCharArray方法。 但是,如果执行此操作,则for循环的循环时间将超过所需的循环时间。 如果您知道自己的输入集,则只能遍历n个字符串并接受它们并将它们转换为数组。 如果您要我提供更多详细信息,请告诉我。

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

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

您还需要在System.in提供数据之前按ENTER。

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

暂无
暂无

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

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