我正在尝试从文件中读取并将内容存储到名为ToDoList的对象中(我假设在GetItem方法下)。然后我应该允许用户添加到列表中。但我迷失在如何创建对象并打印它。
Depends
我应该使用“getAddItem”方法来允许用户添加到列表中。但我无法弄清楚如何将数组添加到对象。更别说制作这个物了。
答案 0 :(得分:2)
一个小代码,扩展pininfarina所说的内容并帮助你开始。
您需要一个ToDoItem类。像这样:
public class ToDoItem {
private String id;
private String description;
public ToDoItem(String id, String description) {
this.id = id;
this.description = description;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
然后你需要一个ToDoList类来保存每个项目。你使用数组支持你的,但我使用了一个ArrayList:
public class ToDoList {
private ArrayList<ToDoItem> items = new ArrayList<ToDoItem>();
public ToDoList(String fileName) throws FileNotFoundException {
File file = new File(fileName);
Scanner scanner = new Scanner(file);
try {
while (scanner.hasNext()) {
String nextLine = scanner.nextLine();
StringTokenizer tokenizer = new StringTokenizer(nextLine, ",");
String id = tokenizer.nextToken();
String description = tokenizer.nextToken();
items.add(new ToDoItem(id, description));
}
} finally {
scanner.close();
}
}
public void setItems(ArrayList<ToDoItem> newItems) {
this.items.addAll(newItems);
}
public List<ToDoItem> getItems() {
return items;
}
public void addItem(ToDoItem item) {
items.add(item);
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("ToDoList{");
for (ToDoItem item : items) {
builder.append(item.getId() + "," + item.getDescription() + "\n");
}
builder.append("}");
return builder.toString();
}
}
这包括一个读取文件并解析项目的构造函数。文件中的每一行必须是“1,something”,因为tokenizer使用逗号。请注意,扫描程序实际上会在读取文件时销毁文件。您可以考虑使用某种FileReader。
最后你需要一个主类来运行它。像这样:
public class RunIt {
private static Scanner keyboard = new Scanner(System.in);
public static void main(String[] args) throws FileNotFoundException {
ToDoList list = new ToDoList("ToDoItems.txt");
try (PrintWriter fout = new PrintWriter(new File("ToDoItems.txt"))) {
String inputLine;
do {
System.out.println("add to the list? [y/n]");
inputLine = keyboard.nextLine();
if ("y".equals(inputLine)) {
System.out.println("enter a to-do using the format 'id,description'");
StringTokenizer tokenizer = new StringTokenizer(keyboard.nextLine(),
",");
String id = tokenizer.nextToken();
String description = tokenizer.nextToken();
list.addItem(new ToDoItem(id, description));
} else {
System.out.println("Here is the list so far:");
System.out.println(list);
}
} while ("y".equals(inputLine));
}
}
}
请注意,这里有很大的改进空间(异常处理,更强大的文件读取等),但这应该可以帮助您入门。
答案 1 :(得分:0)
你问的是一个广泛的问题。这里有一些适合您的设计技巧。