[英]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.