有 Java 编程相关的问题?

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

java加载。将txt文件转换为二维字符串数组

我目前正在做一项作业,已经多次浏览了工作簿和java站点,我似乎看不出我哪里弄错了

我正在尝试将文件导入二维数组。我使用带BufferedReader和FileReader的Scanner来选择命令行参数(titanic.txt)。我通过//testif语句查看它的“fileInput”是否仍然为null。构建时没有问题,只是在运行时

以下是我代码的一部分:

    //Declare Variables
    String[][] titanicArray = new String[1308][6];
    int[] classArray = new int[1308];
    int[] survivedIntArray = new int[1308];
    double[] ageArray = new double[1308];
    double[] ticketPriceArray = new double[1308];
    String inputFile = null;
    String answerStr = null;
    int answer1 = 0;

    Scanner fileInput = null;
    Scanner userInput = new Scanner(System.in);
    inputFile = args[0];

    //try statement to scan command-line argument and fill the array with the data
    try {
        fileInput = new Scanner(new BufferedReader(new FileReader(inputFile)));
        //TEST
        if (fileInput != null){
            System.out.println("Error Taking in file");
        }

        for (int row = 0; row < titanicArray.length; row++) {
            for (int col = 0; col < titanicArray[row].length; col++){
                while (fileInput.hasNext()){
                    titanicArray[row][col] = fileInput.next();
                }
            }
        }
    } finally {
        if (fileInput != null){
            System.out.println("Error Taking in file");
            fileInput.close();
        }//End of If for closing Scanner
    } //End of finally to close Scanner

注:泰坦尼克号。txt包含如下数据(类别、生存、姓名、性别、年龄、票证价格),带标签,无空行:

艾伦,小姐。伊丽莎白·沃尔顿女29211.3375

11艾利森,主人。哈德逊·特雷弗男0.9167 151.5500

10艾莉森,小姐。海伦·罗兰女2151.5500

10 Allison,Hudson先生Joshua Creighton男30 151.5500

10 Allison,Hudson J C夫人(Bessie Waldo Daniels)女25 151.5500

1安德森先生,哈里男48 26.5500

小姐,安德鲁斯。Kornelia Theodosia女63 77.9583


共 (2) 个答案

  1. # 1 楼答案

    数组(列)的大小太小.next()只给出前六个字符串,而输入中的名称似乎太长

  2. # 2 楼答案

       if (fileInput != null){
            System.out.println("Error Taking in file");
        }
    

    您的代码中似乎有一个巨大的错误: 为什么fileInput != null会成为一个问题? 无论如何,首先清理和简化代码,然后寻求帮助总是一个好主意。一些想法:

    • 将文件处理和文件解析分离为不同的方法
    • 使用try with resource简化异常处理和资源关闭