输入没有被正确读取? 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.
}