Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法正确读取输入?爪哇蛇_Java_Input_Java.util.scanner_Element_Void - Fatal编程技术网

Java 无法正确读取输入?爪哇蛇

Java 无法正确读取输入?爪哇蛇,java,input,java.util.scanner,element,void,Java,Input,Java.util.scanner,Element,Void,我目前正在编写一个SnakeJava程序,其中应该有一个从几个给定文件中选择的输入。任务如下: 奖金 对程序进行编辑,使其接受以下级别: 输入。一个关卡定义了一系列的墙,玩家必须对这些墙进行设置 避免。水平可以在黑板上找到。这些文件的结构如下:“在 这条蛇从蛇头开始“=”蛇的初始方向“=”墙的坐标”。 坐标的格式如下:每行一个坐标,以 格式为:“x”“空格”“y”。初始方向是四个字符串之一:“L” (左),“R”(右),“U”(向上)或“D”(向下) 这种文件的一部分: 因此,1。0表示蛇头开始

我目前正在编写一个SnakeJava程序,其中应该有一个从几个给定文件中选择的输入。任务如下:

奖金
对程序进行编辑,使其接受以下级别: 输入。一个关卡定义了一系列的墙,玩家必须对这些墙进行设置 避免。水平可以在黑板上找到。这些文件的结构如下:“在 这条蛇从蛇头开始“=”蛇的初始方向“=”墙的坐标”。 坐标的格式如下:每行一个坐标,以 格式为:“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
}