java问题(读取文件并创建对象)



我有一个java问题需要解决,但我不知道如何解决

您的任务是通过编写名为readData的方法和名为Person类来完成给定的程序。readData方法是在Customers类内部编写的。该程序的目的是读取客户从一个名为customers.txt的文件中获取信息,从每个客户中创建一个新对象,并最终在屏幕上打印所有客户的信息。

在该文件中,每个客户都存储在自己的行中。该文件包含每个客户的姓名和社会保险号码。Person类有一个String类型的属性,用于存储人员的信息(姓名和社会保险号码(。

toString方法必须在Person类中编写,该类返回人员的信息。readData方法获取一个数组作为参数,其中放置了创建的人员。该方法的目的是从文件中的每个客户创建一个对象,并将其放入数组中。该方法返回文件中的人数。

这是说明(上面(,下面是我无法编辑的预制代码(除了"你的代码在这里"部分之后(:

import java.io.*;
import java.util.*;
import java.util.Scanner;
public class Customers {
public static void main(String[] args) throws IOException {

Person[] people = new Person[100];

int peopleAmount = readData(people);

for(int i = 0; i < peopleAmount; i++) {
System.out.println(people[i]);
}
}
// Your code here

示例输出:

James 030377-2651
John 111177-1731
Robert 161280-1822
Michael 121160-1362
William 141075-16

如果太忙而无法给出完整的答案,也可以提供一些关于如何制作的信息。说明书原本不是英文的,如果有奇怪的语法,那就太抱歉了。

假设文件customers.txt的内容与您问题中的示例输出相同,下面是我的实现。我猜你只能使用你已经学习过的类,我还猜你还没有学习过java中的流API,所以希望下面的代码在你的任务限制范围内是可以接受的。

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class Customers {
private static int readData(Person[] people) throws IOException {
int count = 0;
if (people != null && people.length > 0) {
try (FileReader fr = new FileReader("customers.txt");
BufferedReader br = new BufferedReader(fr)) {
String line = br.readLine();
while (line != null) {
String[] parts = line.split(" ");
Person p = new Person(parts[0], parts[1]);
people[count] = p;
count++;
if (count >= people.length) {
break;
}
line = br.readLine();
}
}
}
return count;
}
public static void main(String[] args) throws IOException {
Person[] people = new Person[100];
int peopleAmount = readData(people);
for(int i = 0; i < peopleAmount; i++) {
System.out.println(people[i]);
}
}
}
class Person {
String name;
String ssn;
public Person(String name, String ssn) {
this.name = name;
this.ssn = ssn;
}
public String toString() {
return name + " " + ssn;
}
}

方法readData必须是静态方法,因为它是从作为静态方法的方法main调用的。

方法readData逐行读取文件customers.txt。每一行都包含一个名字,后面跟着一个空格,后面跟着社会保险号码。根据您的示例输出,名称社会保障号码都不包含空格。如果不是这样,那么上面的代码将不起作用。

方法split将从文件的一行创建一个双元素数组。第一个数组元素是名称,第二个是<em]社会保障号>。然后我创建一个Person对象并将其放置在people数组中。

最新更新