首页 > 解决方案 > 如何从java中的文本文件中获取长度?

问题描述

我是java新手。首先,对不起我的英语。我编写了一个代码,将mergedFile.txt 中的两个不同txt 文件与data1.txt 和data2.txt 中的确定数据合并。我创建了 5 个不同的数组以更好地使用它们,但我无法了解文本文件中单词的长度,因此数组使用确定的参数。如果我想添加另一个学生,此代码不起作用。你能帮助我吗?

数据1.txt

ID,Name,LastName,Department
12345,John,Samon,Computer Science
14524,David,Souza,Electric and Electronic
.
.

数据2.txt

ID,Q1,Q2,Q3,Midterm,Final
12345,100,90,75,89,100
14524,80,70,65,15,90
.

margedFile.txt

ID,Name,Q_Average,Midterm,Final,Department
12345,John,88.3,89,100,Computer Science
14524,David,67.0,100,70,Electric and Electronic

这是 ReadData 类

 import java.io.FileInputStream;//import java.io library
 import java.util.Scanner;//import scanner library
 public class ReadData {
public static String[] Read(String filename,String filename2) {
    Scanner scan = null;
    Scanner scan1 = null;/
    FileInputStream input1 = null;
    FileInputStream input = null;
    String[] result = new String[3];
    try {
        input = new FileInputStream(filename);
        scan = new Scanner(input);
        input1 = new FileInputStream(filename2);
        scan1 = new Scanner(input1);
        String[][] myArray = new String[4][4];
        String[][] myArray1 = new String[4][6];

        while(scan.hasNext() || scan1.hasNext()) {
            for (int i = 0; i < myArray.length; i++) {
                String[] split = 
  scan.nextLine().trim().split(",");
                for (int j = 0; j < split.length; j++) 
  {
                    myArray[i][j] = split[j]; 

                }
            }
            for (int i = 0; i < myArray1.length; i++) {
                String[] split1 = scan1.nextLine().trim().split(",");
                for (int j = 0; j < split1.length; j++) {
                    myArray1[i][j] = split1[j]; 
                }
            }

        }


        int[][] quiz = new int[3][3];
        double[] average = new double[3];
        int sum = 0;
        double averagee = 0;
        for (int i = 0; i < quiz.length; i++) {
            for (int j = 0; j < quiz.length; j++) {
                quiz[i][j] = Integer.parseInt(myArray1[i+1][j+1]);
                sum += quiz[i][j];
            }
            averagee = sum/quiz.length;
            average[i] = averagee;
            sum = 0;
        }
        for (int i = 1; i < myArray1.length; i++) {
            for (int j = 1; j < myArray1.length; j++) {
                if(myArray[i][0].equalsIgnoreCase(myArray1[j][0])) {
                    result[i-1] = "\n" + myArray[i][0] + " "+ myArray[i][1] + " " + (average[j-1]) +" "+ myArray1[j][4] +" " + myArray1[j][5] + " "+ myArray[i][3];
                    //System.out.println(Arrays.deepToString(myArray[i]) + " " + Arrays.deepToString(myArray1[j]));
                }
            }
        }


        //System.out.println(Arrays.deepToString(quiz));
        //System.out.println(Arrays.toString(average));

    }
        catch(Exception e) {
            System.out.println(e);
        }



    return result;
    }
 }

这是 WriteData 类

  import java.io.FileOutputStream;
  import java.io.PrintWriter;
  import java.util.Arrays;

   public class WriteData extends ReadData {

  void Write(String filename) {

    PrintWriter writer = null;
    FileOutputStream output = null;

    try {
        output = new FileOutputStream(filename);
        writer = new PrintWriter(output);

  writer.print("ID,Name,Q_Average,Midterm,Final,Department ");
        writer.print(Arrays.toString(Read("data1.txt", 
 "data2.txt")));
        writer.flush();
        writer.close();

    } catch (Exception e) {
        // TODO: handle exception
    }

}
}

标签: javatext

解决方案


推荐阅读