我目前正在编写一个snakejava程序,其中应该有一个从几个给定文件中选择的输入。任务如下:
奖金
对程序进行编辑,使其接受一个级别作为输入。一个关卡定义了许多墙,玩家必须避开这些墙。水平可以在黑板上找到。这些文件的结构如下:“蛇开始的坐标,从蛇头开始”=“蛇的初始方向”=“墙的坐标”。坐标的格式如下:每行一个坐标,格式为:“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是“total”蛇应该移动的起始方向。之后所有的坐标组成了一堵墙。
我已经写了所有关于snake必须做的事情的代码。但是,我没有通过这个=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(“=”)不起作用。。。
1条答案
按热度按时间gv8xihay1#
你可以用扫描器读出整行内容:
scanner.next()
然后对其执行一些字符串拆分:input.split("=")
它返回一个包含3个项目的数组(如果一切顺利的话)。然后可以将各个元素分配给寄存器,如:编辑: