有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从文本文件中读取每行不同数据类型

我有一个文本文件,提供22个高尔夫球场的信息,包括球场名称、名称、地点、设计师、果岭费、PAR、年建成和总码。当我读入时,每一行都需要存储到相应的变量中,然后用于创建一些对象。文件的第一行是文本文件中的高尔夫球场数

    FileInputStream fstream = new FileInputStream(System.getProperty("user.dir")
            + "\\GolfCourses.txt");
    //use file
    DataInputStream in = new DataInputStream(fstream);
    //read input
    BufferedReader br = new BufferedReader(new InputStreamReader(in));
    Tree newTree = new Tree();


    try{
         String line = br.readLine();
          if(line==null)
             throw new IOException();

        int clubs = Integer.parseInt(line);
        for(int i = 0; i < clubs; i++){
            String name = br.readLine();
            String location = br.readLine();
            double fee = Double.parseDouble(br.readLine());
            int par = Integer.parseInt(br.readLine());
            String designer = br.readLine();
            int built = Integer.parseInt(br.readLine());
            int yards = Integer.parseInt(br.readLine());
            newTree.insert(new TreeNode(new GolfCourse(name, location, designer, fee, par, built, yards))); 
        }

        in.close();
    }catch(IOException e){
        System.out.println(e);
    }

读入似乎超前于自身,因此程序试图解析字符串而不是数字。我以前从未遇到过这个问题,所以我不知道如何解决它

编辑:代码现在按预期工作。这个问题来自for循环中的“i<;=clubs”部分。谢谢你花时间帮忙


共 (1) 个答案

  1. # 1 楼答案

    这是因为你的第一个br.readLine()将从文件中获得你的第一行,即俱乐部的数量。在if语句失败后,调用br.readLine()。这个调用将获得下一行,因为在if语句中对br.realLine()的最后一次调用中,第一行已经被检索

    试试这个:

    String line = br.readLine();
    if(line == null) {
        throw new IOException();
    }
    int clubs = Integer.parseInt(line);