首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >文件中的Java Maze

文件中的Java Maze
EN

Stack Overflow用户
提问于 2017-03-29 16:23:26
回答 1查看 812关注 0票数 1

我从一个文件中得到了一个迷宫,我试图用一个程序编写一个类Exercise4,该程序将这样一个迷宫文件读入一个二维的布尔数组。然后在控制台上为每一行显示一行数组。使用空白符号和#-符号表示数组元素,以便控制台输出具有与迷宫文件相同的格式,参见上面的示例。

代码语言:javascript
运行
复制
    package assignmentce152;


    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.Scanner;
    import java.io.FileNotFoundException;
/**
 * Created by ak on 29/03/2017.
 */
public class Exercise4 {
    public static void main(String[] args) throws IOException {
        Mazes();
    }
        private static char[][] maze = null;
        private static int rows = 0;
        private static int cols = 0;
        private static int xStart = 0;
        private static int yStart = 0;

        public static void Mazes() throws IOException {
            File mazefile = new File("C:/Users/IdeaProjects/Assignment152/data/maze21.txt");
            BufferedReader reader = new BufferedReader(new FileReader(mazefile));

           Scanner lineOfFile = new Scanner(reader.readLine()); 

            rows = lineOfFile.nextInt(); //get the number of rows of the maze

            cols = lineOfFile.nextInt(); // get the number of columns of the maze
            maze = new char[rows][cols]; //create a char array of the proper size

            //For loops to iterate the rows and col to find the start/enterance of the maze as it pertains to the first char in the row
            for (int y = 0; y < cols; y++) {
                lineOfFile = new Scanner(reader.readLine());
                for (int x = 0; x < rows; x++) {
                    char start = lineOfFile.next().charAt(0);
                    maze[x][y] = start;

                    //statement to set the starting coorinates for the maze
                    if (start == '.') {
                        xStart = x;
                        yStart = y;
                    }

                }
            }


        }
    }

我如何得到这些错误,我应该更改什么?任何我认为有帮助的事情

代码语言:javascript
运行
复制
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at assignmentce152.Exercise4.Mazes(Exercise4.java:28)
at assignmentce152.Exercise4.main(Exercise4.java:14)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at  sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
EN

回答 1

Stack Overflow用户

发布于 2017-03-29 21:41:33

看起来,您的程序试图从扫描仪读取两个整数,但在那里找不到两个整数。

让我猜猜:下面这句话错了。

代码语言:javascript
运行
复制
       Scanner lineOfFile = new Scanner(reader.readLine()); 

readLine()读取文件的第一行。从这一行创建一个可用于解析行的扫描器对象。例如,如果您的两个数字位于文件的前两行,它将永远不会同时到达它们,并将抛出一个InputMismatchException

相反,您可以尝试放弃reader,只需将扫描仪创建为

代码语言:javascript
运行
复制
       Scanner lineOfFile = new Scanner(mazefile); 

这将允许您的扫描器读取整个文本文件,而不仅仅是第一行。

如果这不能解决您的问题,我相信您需要编辑您的问题,并添加一个样本的文件外观。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43099062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档