【问题标题】:read hardcoded maze into a multi dimensional array将硬编码迷宫读入多维数组
【发布时间】:2015-04-03 18:38:05
【问题描述】:

我想早点问,但我认为我问错了。

我需要将一个 txt 文件读入一个二维数组。

我的 txt 文件是代表墙壁、路径和外部的字符块。

它是一个硬编码的迷宫,因此字符必须以与文件中相同的配置读入数组。

我尝试了多种方法,但我无法理解它 这是代码

public static void main(String[] args) {
    File file = new File("//Mac//Users//Tucker//SPSU//Programming 2//mazehardcode");
    Scanner fileScanner = new Scanner(file);
    String mazeCode = fileScanner.nextLine();
    char buffer [][]= new char[80][80];
    new Thread(new Monitor()).start();
    while (fileScanner.hasNextLine()){
    for(int i = 0;i<buffer.length;i++){
        for(int j = 0;j<buffer[i].length;j++){

        }
    }
    }

这就是我所能得到的,没有错误,所以我需要帮助 我遇到的错误与将字符串转换为 char 或将 char 转换为 char[][] 或任何类似的东西有关。

【问题讨论】:

    标签: java for-loop multidimensional-array java.util.scanner filereader


    【解决方案1】:

    如果您的 tilemap 在文件中看起来像这样:

    11111
    10001
    11101
    10001
    11111
    

    您可以读取每一行并循环遍历每个字符并将其分配给char buffer[][]

    int currentLine = 0;
    while (fileScanner.hasNextLine()){
    
        String line = fileScanner.nextLine();
        for(int i = 0;i<line.length();i++){
            buffer[currentLine][i] = line.charAt(i);
        }
        currentLine++;
    }
    

    如果你只将它存储在这样的一行中:

    1111110001111011000111111
    

    你可以做一些模和除法。 编辑: 仅当 tilemap 的宽度与缓冲区的长度相同时才有效

    if(fileScanner.hasNextLine()){
        String line = fileScanner.nextLine();
        for(int i = 0;i<line.length();i++){
            buffer[i/buffer.length][i%buffer.length] = line.charAt(i);
        }
    }
    

    但请注意关卡的实际大小,因此如果大小会有所不同,您可能会在第一行中看到它的大小。

    【讨论】:

      【解决方案2】:

      如果您需要像下面提到的示例那样从文件中读取字符块。

      #########
      #0000111#
      #########
      

      您可以使用 System.Arraycopy 将字符串转换为字符数组后将整行复制到缓冲区中。

      int lineCount=0;
      while (fileScanner.hasNextLine()){
        String line = fileScanner.nextLine();                                           
        System.arraycopy(line.toCharArray(),0,buffer[lineCount++],0,line.length());  
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-18
        • 1970-01-01
        • 2020-06-14
        相关资源
        最近更新 更多