首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据结构的java文件读取帮助

数据结构的java文件读取帮助
EN

Stack Overflow用户
提问于 2016-09-20 03:56:39
回答 1查看 39关注 0票数 1

我试图从java中的一个文件中读取,但是我不断地收到不同的错误,程序似乎没有读取正确的信息片段。主要守则:

代码语言:javascript
复制
package main;

import java.io.File;

import java.io.FileNotFoundException;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        File file = new File("C:\\Users\\Samuel\\Desktop\\Projects\\School\\Titanic\\src\\main\\titanic.txt");
        try {
            Scanner fileReader = new Scanner(file);
            String passengerData = "";
            int passengerNumber = 0;
            int passengerClass = 0;
            boolean passengerAge = false;
            boolean passengerSex = false;
            boolean survived = false;
            int spaceIndex = 0;
            int spaceIndex2 = 0;

            fileReader.nextLine();
            while(fileReader.hasNextLine()){
                passengerData = fileReader.nextLine();
                spaceIndex2 = passengerData.indexOf(" ,",spaceIndex);

                System.out.println(passengerData.substring(spaceIndex+1, spaceIndex2));
                passengerNumber = Integer.parseInt(passengerData.substring(spaceIndex+1, spaceIndex2));
                spaceIndex = spaceIndex2;
                spaceIndex2 = passengerData.indexOf(" ,", spaceIndex);
                if(passengerData.substring(spaceIndex, spaceIndex2).equals("1st Class")){
                    passengerClass = 1;
                }else if(passengerData.equals("2nd class")){
                    passengerClass = 2;
                }else{
                    passengerClass = 3;
                }

                spaceIndex = spaceIndex2;
                System.out.println(passengerData.toString());
                System.out.println(passengerNumber+"\t"+passengerClass);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}

我试图从以下文件读取的文件:

  • 指数、阶级、年龄、性别
  • 1,头等舱,成人,伙计,是的
  • 2,头等舱,成人,伙计,是的
  • 3,头等舱,成人,伙计,是的
  • 4,头等舱,成人,伙计,是的
  • 5,头等舱,成人,伙计,是的
  • 6,头等舱,成人,伙计,是的
  • 7,头等舱,成人,伙计,是的
  • 8,头等舱,成人,伙计,是的
  • 9,头等舱,成人,伙计,是的
  • 10,头等舱,成人,伙计,是的
  • 11,头等舱,成人,伙计,是的
  • 12,头等舱,成人,伙计,是的
  • 13,头等舱,成人,伙计,是的
  • 14,第一班,大人,是的(这只是一个样本,整篇课文要大得多)
EN

回答 1

Stack Overflow用户

发布于 2016-09-20 04:01:05

我认为你应该用一个合适的测定仪把你读的每一行都分开。如果你在问题中提供的样本数据是准确的,那么使用\\s+,\\s+作为测定仪就可以了。

代码语言:javascript
复制
while (fileReader.hasNextLine()) {
    String[] passengerData = fileReader.nextLine().split("\\s+,\\s+");

    passengerNumber = Integer.parseInt(passengerData[0].trim());

    switch (passengerData[1]) {
        case "1st Class":
            passengerClass = 1;
            break;

        case "2nd class":
            passengerClass = 2;
            break;

        default:
            passengerClass = 3;
    }

    System.out.println(passengerNumber + "\t" + passengerClass);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39585449

复制
相关文章

相似问题

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