【问题标题】:Input does not get read correctly? java-snake输入没有被正确读取?爪哇蛇
【发布时间】:2020-11-25 16:28:19
【问题描述】:

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

奖金
编辑程序,使其接受一个级别 输入。一个级别定义了许多墙壁,玩家必须 避免。级别可以在 Blackboard 上找到。这些文件的结构如下:“坐标在 蛇从哪个开始,从蛇的头开始"="蛇的初始方向"="墙壁的坐标"。 坐标格式如下:每行一个坐标,单位为 格式:“x”“空格”“y”。初始方向是四个字符串之一:“L” (左)、“R”(右)、“U”(上)和“D”(下)。

一个这样的文件:

1. 0 
0 0=R=3 3
4 3 
5 3 
6 3 
7 3 
etc.

所以 1. 0 表示蛇头开始的第一个坐标,0 0 是身体第一部分开始的第二个坐标。然后 R 是“总”蛇应该行进的起始方向。之后的所有坐标都形成了墙。

我已经编写了所有关于蛇必须做的所有其他事情的代码。但是,我没有超越这个 =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("=") 不起作用...

【问题讨论】:

    标签: java input java.util.scanner element void


    【解决方案1】:

    您可以使用扫描仪读取整行: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.
    }
    

    【讨论】:

    • 感谢您的回答!这确实有效:) 但是我的学习计划没有引入这种方法,并希望我使用 useDelimiter 或 hasNext... 我的导师暗示我的 useDelimiter 不在正确的位置,但我不明白为什么或在哪里然后必须放在...
    猜你喜欢
    • 1970-01-01
    • 2013-02-28
    • 1970-01-01
    • 2014-01-24
    • 1970-01-01
    • 2021-06-24
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    相关资源
    最近更新 更多