无法正确读取输入? java 蛇

4uqofj5v  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(242)

我目前正在编写一个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(“=”)不起作用。。。

gv8xihay

gv8xihay1#

你可以用扫描器读出整行内容: 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.
}

相关问题