Java 无法正确读取输入?爪哇蛇
我目前正在编写一个SnakeJava程序,其中应该有一个从几个给定文件中选择的输入。任务如下: 奖金Java 无法正确读取输入?爪哇蛇,java,input,java.util.scanner,element,void,Java,Input,Java.util.scanner,Element,Void,我目前正在编写一个SnakeJava程序,其中应该有一个从几个给定文件中选择的输入。任务如下: 奖金 对程序进行编辑,使其接受以下级别: 输入。一个关卡定义了一系列的墙,玩家必须对这些墙进行设置 避免。水平可以在黑板上找到。这些文件的结构如下:“在 这条蛇从蛇头开始“=”蛇的初始方向“=”墙的坐标”。 坐标的格式如下:每行一个坐标,以 格式为:“x”“空格”“y”。初始方向是四个字符串之一:“L” (左),“R”(右),“U”(向上)或“D”(向下) 这种文件的一部分: 因此,1。0表示蛇头开始
对程序进行编辑,使其接受以下级别: 输入。一个关卡定义了一系列的墙,玩家必须对这些墙进行设置 避免。水平可以在黑板上找到。这些文件的结构如下:“在 这条蛇从蛇头开始“=”蛇的初始方向“=”墙的坐标”。 坐标的格式如下:每行一个坐标,以 格式为:“x”“空格”“y”。初始方向是四个字符串之一:“L” (左),“R”(右),“U”(向上)或“D”(向下) 这种文件的一部分: 因此,1。0表示蛇头开始的第一个坐标,0表示身体第一部分开始的第二个坐标。然后,R是“总”蛇移动的起始方向。之后的所有坐标构成了一堵墙 我已经写了所有关于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(=”)不起作用…您可以使用扫描仪读取整行内容:
scanner.next()
然后对其执行一些字符串拆分:input.split(=”
,它返回一个包含3项的数组(如果一切正常的话)。然后,您可以将各个元素分配给寄存器,如:
Scanner Scanner=UIAuxiliaryMethods.askUserForInput().getScanner();
字符串输入=scanner.next();
字符串[]数据=输入。拆分(“”);
字符串headOfSnake=data[0];
字符串currentDirection=数据[1];
字符串坐标fWalls=数据[2];
编辑:
void parseInput(){
Scanner levelInput=UIAuxiliaryMethods.askUserForInput().getScanner();
inputUser.useDelimiter(“”);
//工作代码
字符串输入=levelInput.next();
if(输入等于(“U”)){
//代码
}else if(输入等于(“D”){
//代码
}//…等等。
}
谢谢你的回答!这确实有效:)但是我的学习计划没有介绍这种方法,希望我使用useDelimiter或hasNext。。。我的指导老师暗示我的useDelimiter不在正确的位置,但我不明白为什么或者应该放在哪里。。。
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
}