输入没有被正确读取? java-snake
Input does not get read correctly? java-snake
我目前正在编写一个 snake java 程序,其中应该从几个给定文件中选择一个输入。赋值如下:
Bonus
Edit the program in such a way that it accepts a level as
input. A level defines a number of walls, which the player has to
avoid. Levels can be found on Blackboard. The structure of these files is as follows: "the coordinates at
which the snake starts, starting with the head of the snake"="the initial direction of the snake"="the coordinates of the walls".
Coordinates are formatted in the following way: one coordinate per line, in
the format: "x""space""y". The initial direction is one of four strings: "L"
(Left), "R" (Right), "U" (Up) of "D" (Down).
A piece of such a file:
1. 0
0 0=R=3 3
4 3
5 3
6 3
7 3
etc.
所以1. 0表示蛇头开始的第一个坐标,0 0是body第一部分开始的第二个坐标。那么 R 就是 starting-direction 蛇应该在其中行走的 'total' 。之后的所有坐标都形成了一块块墙。
我已经编写了关于 snake 必须做的所有其他事情的所有代码。但是,我没有通过这个 =R=.
我成功扫描并与我的代码一起使用的前两个坐标(出于抄袭原因我已将其遗漏):1. 0 和 0 0.
但是此后的所有输入元素都不会被任何扫描仪读取...
我还怀疑我可以正确读取 =R= 之后的所有坐标。 (//省略代码)
所以我的问题主要是指我的程序应该如何读取 =R= 以便我的代码继续(当然使用作业中提到的 R)。
我如何编写代码才能做到这一点?
void parseInput() {
Scanner levelInput = UIAuxiliaryMethods.askUserForInput().getScanner();
inputUser.useDelimiter("=");
//working code
if (levelInput.hasNext("U")) {
direction.equals("U");
}
else if (levelInput.hasNext("D")) {
direction.equals("D");
}
else if (levelInput.hasNext("R")) {
direction.equals("R");
}
else if (levelInput.hasNext("L")) {
direction.equals("L");
}
// working code
}
我怀疑我需要使用某种定界符,但我的 useDelimiter("=") 不起作用...
您可以使用扫描器读取整行:scanner.next()
然后对其执行一些字符串拆分:input.split("=")
其中 returns 一个包含 3 个项目的数组(如果一切顺利的话).然后,您可以将各个元素分配给寄存器,例如:
Scanner scanner = UIAuxiliaryMethods.askUserForInput().getScanner();
String input = scanner.next();
String[] data = input.split("=");
String headOfSnake = data[0];
String currentDirection = data[1];
String coordinatesOfWalls = data[2];
编辑:
void parseInput() {
Scanner levelInput = UIAuxiliaryMethods.askUserForInput().getScanner();
inputUser.useDelimiter("=");
//working code
String input = levelInput.next();
if (input.equals("U")) {
// code
} else if (input.equals("D") {
// code
} // ... and so on.
}
我目前正在编写一个 snake java 程序,其中应该从几个给定文件中选择一个输入。赋值如下:
Bonus
Edit the program in such a way that it accepts a level as input. A level defines a number of walls, which the player has to avoid. Levels can be found on Blackboard. The structure of these files is as follows: "the coordinates at which the snake starts, starting with the head of the snake"="the initial direction of the snake"="the coordinates of the walls". Coordinates are formatted in the following way: one coordinate per line, in the format: "x""space""y". The initial direction is one of four strings: "L" (Left), "R" (Right), "U" (Up) of "D" (Down).
A piece of such a file:
1. 0
0 0=R=3 3
4 3
5 3
6 3
7 3
etc.
所以1. 0表示蛇头开始的第一个坐标,0 0是body第一部分开始的第二个坐标。那么 R 就是 starting-direction 蛇应该在其中行走的 'total' 。之后的所有坐标都形成了一块块墙。
我已经编写了关于 snake 必须做的所有其他事情的所有代码。但是,我没有通过这个 =R=.
我成功扫描并与我的代码一起使用的前两个坐标(出于抄袭原因我已将其遗漏):1. 0 和 0 0. 但是此后的所有输入元素都不会被任何扫描仪读取... 我还怀疑我可以正确读取 =R= 之后的所有坐标。 (//省略代码)
所以我的问题主要是指我的程序应该如何读取 =R= 以便我的代码继续(当然使用作业中提到的 R)。
我如何编写代码才能做到这一点?
void parseInput() {
Scanner levelInput = UIAuxiliaryMethods.askUserForInput().getScanner();
inputUser.useDelimiter("=");
//working code
if (levelInput.hasNext("U")) {
direction.equals("U");
}
else if (levelInput.hasNext("D")) {
direction.equals("D");
}
else if (levelInput.hasNext("R")) {
direction.equals("R");
}
else if (levelInput.hasNext("L")) {
direction.equals("L");
}
// working code
}
我怀疑我需要使用某种定界符,但我的 useDelimiter("=") 不起作用...
您可以使用扫描器读取整行:scanner.next()
然后对其执行一些字符串拆分:input.split("=")
其中 returns 一个包含 3 个项目的数组(如果一切顺利的话).然后,您可以将各个元素分配给寄存器,例如:
Scanner scanner = UIAuxiliaryMethods.askUserForInput().getScanner();
String input = scanner.next();
String[] data = input.split("=");
String headOfSnake = data[0];
String currentDirection = data[1];
String coordinatesOfWalls = data[2];
编辑:
void parseInput() {
Scanner levelInput = UIAuxiliaryMethods.askUserForInput().getScanner();
inputUser.useDelimiter("=");
//working code
String input = levelInput.next();
if (input.equals("U")) {
// code
} else if (input.equals("D") {
// code
} // ... and so on.
}