Java - 从.txt文件读取到Object中

时间:2018-02-28 20:50:28

标签: java file object java.util.scanner

我有一个对象调用问题。它具有以下属性:

  • 字符串问题,选项1,选项2,选项3,答案

  • 双重难度

  • int category

我有一个名为questions.txt的文件,其中包含有关这些属性的信息,属性由逗号分隔。 (每行1个对象)

e.g。

胭脂红是一种生动的色调,其颜色为?,蓝色,绿色,黄色,红色,1,2

我想读取文件的每一行,创建一个Object Question并将其添加到名为questionBank的ArrayList中。

通过上面提到的示例,这将是创建新Object的结果。

问题=胭脂红是一种鲜艳的颜色?

option1 =蓝色

option2 =绿色

option3 =黄色

回答=红色

难度= 1

category = 2

到目前为止,我已经获得了以下代码,但不知道如何在逗号之间提取每个属性,因此我可以在Object实例化期间将其用作参数。

Scanner input = new Scanner(new File("/Users/usaamahpatel/IdeaProjects/sdd_assignment/src/questions.txt"));
    input.useDelimiter(",");

    while (input.hasNext()) {
        System.out.println(input.next());
    }

这是我从上面代码得到的输出:

Carmine is a vivid shade of which colour?
Blue
Green
Yellow
Red
1
2

如您所见,它在逗号之间打印每个项目,如何为一个对象提取每行的所有属性,等等?

2 个答案:

答案 0 :(得分:0)

我假设你在文件中有多行,所以不止一个问题,对吗?

然后使用不是,的分隔符,而是newline逐行读取(或者使用Files#readLines。然后你知道每一行代表一个对象。要检索不同的您可以使用,拆分对象的属性并填充对象

答案 1 :(得分:0)

假设您想要的每个问题由换行符分隔,您可以使用input.nextLine().split(",")来获取一个字符串数组,其中每个元素都是一个属性。然后,您可以使用Double.valueOf()Integer.valueOf()将难度和类别解析为正确的类型。