我目前正在编写一个snake java程序,其中应该有一个从几个给定文件中选择的输入。转让情况如下:
奖金
对程序进行编辑,使其接受一个级别作为输入。一个级别定义了一些墙,玩家必须避免这些墙。水平可以在黑板上找到。这些文件的结构如下:“蛇开始的坐标,从蛇的头开始”=“蛇的初始方向”=“墙壁的坐标”。坐标的格式如下:每行一个坐标,格式为"x""space""y“。最初的方向是四个字符串之一:"L“(左),"R”(右),"U“(向上),"D”(下降)。这样的档案中的一小片:
1. 0
0 0=R=3 3
4 3
5 3
6 3
7 3
etc.
所以1.0是指蛇头开始的第一个坐标,而0是身体第一部分开始的第二个坐标。然后R是“总”蛇应该走的起始方向。在那之后的所有坐标都形成了一道墙。
我已经写了所有关于蛇必须做的事情的代码。然而,我无法通过这个=R=。
前两个坐标,我成功地扫描和使用了我的代码(由于剽窃的原因我省略了):1.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("=")不起作用.
发布于 2020-11-25 16:36:16
您可以使用扫描器:scanner.next()
读取整行,然后对其执行字符串拆分:input.split("=")
,它返回一个包含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.
}
https://stackoverflow.com/questions/65008823
复制相似问题