名字是String类,爱好是Arraylist类,新建一个class且有一个toString 用String.format打印扫描的文件,出来的名字后面要有冒号且要空出一定的距离,爱好的开头对齐
时间: 2024-03-03 21:50:52 浏览: 18
好的,这里是一个更加详细的示例代码,包括了文件扫描和类的定义:
```java
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;
public class Person {
private String name;
private ArrayList<String> hobbies;
public Person(String name, ArrayList<String> hobbies) {
this.name = name;
this.hobbies = hobbies;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(String.format("%-10s:", name));
for (String hobby : hobbies) {
sb.append(String.format("%10s", hobby));
}
return sb.toString();
}
public static void main(String[] args) {
try {
File file = new File("test.txt");
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String[] parts = line.split(":");
String name = parts[0];
String[] hobbies = parts[1].split(",");
ArrayList<String> hobbyList = new ArrayList<>();
for (String hobby : hobbies) {
hobbyList.add(hobby.trim());
}
Person person = new Person(name, hobbyList);
System.out.println(person);
}
scanner.close();
} catch (FileNotFoundException e) {
System.out.println("File not found.");
}
}
}
```
这个示例代码假设文件名为test.txt,格式为每行一个名字和一些爱好,用冒号分隔。类的定义包括了一个构造函数用于初始化名字和爱好,以及一个重写的toString方法用于格式化输出。
在toString方法中,使用了String.format方法来格式化输出,%-10s表示左对齐,并占用10个字符的宽度,如果不够则用空格填充。%10s表示右对齐,并占用10个字符的宽度,同时开头不填充空格。这样就可以保证爱好的开头对齐。