如何从Java中的文本文件创建对象

问题描述 投票:1回答:1

我正在执行一项任务,用户在其中创建专辑和这些专辑中的歌曲。我需要添加一个功能,该功能可以从文本文件(已经提供给我们)创建专辑中的歌曲。专辑和歌曲保存在数组中,并且为所有涉及的变量提供了设置/获取方法。我们获得的文本文件的格式如下,但包含多个相册:

女王专辑专辑

歌曲

波西米亚狂想曲名称 艺术家皇后 持续时间354 流派摇滚

承受压力的名字 艺术家皇后 持续时间248 流派摇滚

到目前为止,这是我所拥有的,它什么都不做。

void importAlbum() throws FileNotFoundException {
        String path;
        Scanner inputStream;

        System.out.println("Please type the name of the file you want to import (from same folder): ");
        path = console.nextLine();

        try {
            inputStream = new Scanner (new File(path));
        } catch(FileNotFoundException e){
            System.out.println("Error opening the file "+path);
        }

        while(inputStream.hasNextLine()){
            // Where to go
        }
    }

我只是不确定如何读取每一行并将变量发送到正确的set方法。我必须要有if语句的束吗?但是,如何识别文本文件中有多个相册。PS。我们不能使用ArrayLists,只能使用Arrays(我在一些在线解决方案中看到了针对此问题的arraylists)PPS。让我知道是否需要上传代码的其他部分(对不起,我是溢出/编程的新手)

java arrays object
1个回答
0
投票

您的文档已经结构化,因此可以遵循该结构。

而不是使用复杂的if-else构造,请考虑对象和方法!

  • 创建课程Album
  • 创建课程Track
  • 创建课程TextReader
  • 创建课程TextParser

执行TextParser.parse()时,它会检查输入(来自TextReader),是Album信息还是Track信息。

  • Album然后创建新的Album
  • Track,创建新的Track,然后将Track添加到Album

注意

此处发布的解决方案基于观点,如果您找到更好的对象和方法,请应用这些!! >>

实施提示
  • 如果出现空白行,尝试将行拆分为InformationBlocks,新的InformationBlock到达末尾

  • InformationBlock可以

    • 是相册信息(一行-但不是Songs
    • 是歌曲信息(一行:Songs
    • 是曲目信息(四行)
  • InformationBlock应该是Parser的一部分

  • 创建一个测试以验证包含多个专辑的文档是否正常工作
  • © www.soinside.com 2019 - 2024. All rights reserved.