如何从文本文件传递信息到构造函数?

时间:2015-02-09 07:47:59

标签: java constructor java.util.scanner

假设有两个类:ExamMainExam(包含main方法)。 class Exam有一个构造函数

public Exam(String firstName, String lastName, int ID)

MainExam从tex文件中读取数据。例如,数据可以是:

John Douglas 57

如何从文本文件中将数据传递给构造函数?

3 个答案:

答案 0 :(得分:0)

您可以参考以下代码段将文本文件的内容存储在字符串对象中:

BufferedReader br = null;
    try {
            String sCurrentLine;
            br = new BufferedReader(new FileReader("C:\\testing.txt"));
            while ((sCurrentLine = br.readLine()) != null) {
            //  System.out.println(sCurrentLine);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (br != null)br.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }

该文件的内容现在位于sCurrentLine对象中。使用StringTokenizer,您可以使用space作为分隔符来分隔firstname,lastname和ID。希望这会有所帮助!!

答案 1 :(得分:0)

您可以使用StringTokenizer将数据分解为MainExam读取的部分。

String str; //data read by MainExam, like: John Douglas 57
String[] values = new String[3]; // size acording to your example 
StringTokenizer st = new StringTokenizer(str);
int i=0;
while (st.hasMoreTokens()) {
    values[i++] = st.nextToekn();
}

现在,您已在数组values中分隔数据。

答案 2 :(得分:0)

以下是读取文件的代码(以防万一你真的没有)

Scanner scanner = new Scanner(new File("C:\\somefolder\\filename.txt");
String data = scanner.nextLine();

现在,假设您的文件行采用以下格式:

<FirstName> <LastName> <id>

每个元素中没有任何空格,您可以使用正则表达式" "String#split data

String[] arguments = data.split(" ");

然后将它们传递给构造函数(String,String,int)

String fn = data[0];
String ln = data[1];
int id = Integer.parse(data[2]);
new Exam(fn, ln, id);