读取文件并将其存储在对象中

时间:2015-07-31 21:35:19

标签: java arrays object text-files

我正在尝试从文件中读取并将内容存储到名为ToDoList的对象中(我假设在GetItem方法下)。然后我应该允许用户添加到列表中。但我迷失在如何创建对象并打印它。

Depends

我应该使用“getAddItem”方法来允许用户添加到列表中。但我无法弄清楚如何将数组添加到对象。更别说制作这个物了。

2 个答案:

答案 0 :(得分:2)

一个小代码,扩展pininfarina所说的内容并帮助你开始。

  1. 您需要一个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;
        }
    
    }
    
  2. 然后你需要一个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)

你问的是一个广泛的问题。这里有一些适合您的设计技巧。

  1. 创建您的集合类。这可以命名为ToDoList。然后创建此类的属性和行为。一个属性将是待办事项列表项的集合变量。您可以使用,List,ArrayList等。可以添加,删除,重新排序等行为。
  2. 创建您的项目类。再次与属性和行为。属性可以包括做什么,日期,重要性等等。
  3. 当您阅读文件时,让您的程序为每一行,项目等实例化您的ToDoItem类,然后将它们保存到先前创建的容器类中,这是您的ToDoList。
  4. 您可以使用ToDoList类&#39; addItem方法(行为)让您的用户在ToDoList中添加更多项目。如果您希望在程序关闭后保留列表。您可以创建一个数据库来存储对象。
  5. 祝你好运。

相关问题