如何将字符串放入对象数组?

时间:2018-09-25 23:16:41

标签: java arrays object netbeans

这是我想在我的项目中要做的事情:

  

这是您要做的:使用以下命令创建一个名为MyRecord(MyRecord.java)的类。       变量名,姓,电子邮件,ID号,颜色和余额。使用       每个字段的适当数据类型。

所以我按如下方式创建了该类:

public class MyRecord {

    String firstname, lastname, email, color;
    double idnumber, balance;
}

项目的下一部分是在我的main方法中创建一个MyRecord对象数组,具体操作如下:

 MyRecord recarray[] = new MyRecord[ARRAYSIZE];
 //ARRAYSIZE is 10

下一步是扫描并读取包含5条记录的文件,例如:

String filename = "data.txt";
File fileobject = new File(filename);
Scanner input = new Scanner(fileobject);

到目前为止,该程序可以正常运行,并且可以从文件中读取数据,但是现在出现了问题:该项目希望我将这些字符串记录添加到MyRecord数组中。我试图这样做:

for(int i = 0; i <= 5; i++) {
    recarray[i] = input.next();      
}

但是它抛出一个错误,提示“字符串无法转换为MyRecord对象数组”。我有点想它会引发该错误,但是我不确定如何解决此问题。那么如何将字符串转换为对象并将其放入数组中?还是有另一种方法?

此外,这就是记录的内容,即从中读取文件的文件:

Mary, Jane, maryj@gmail.com, 7654321, blue, 27.54
John, Doe, jd@yahoo.com, 123456, green, 19.24
Curly, Howard, nyuknyuk@msn.com, 888765, purple, 0.0
Bart, Simpson, donthaveacow@hotmail.com, 457673, magenta, 432.23
Clark, Kent, superdude@dailyplanet.com, 976834, red, 11.10

对不起,我刚接触Java。谢谢!

2 个答案:

答案 0 :(得分:1)

该错误是因为您试图将input.next();(A String)解析为recarray[i](这是一个MyRecord对象)。您需要访问各个字段。像这样:

recarray[i].firstname = input.next();

然后,当您进入double时,可以执行以下操作:

recarray[i].idnumber = Double.parseDouble(input.next());

答案 1 :(得分:1)

GBlodgett的答案是正确的。我将添加一个代码示例,说明如何从文件中收集信息并将其放入数组中。例如:

String[] array = new String[6];
for (int i = 0; i < numberOfLinesToRead; i++) {
    recarray[i] = new MyRecord(); // Make sure to initialize the object before accessing it
    array = scan.nextLine().replaceAll(" ", "").split(","); // The array object now contains each individual value of one line
    recarray[i].firstname = array[0];
    recarray[i].lastname = array[1];
    recarray[i].email = array[2];
    recarray[i].idnumber = Double.parseDouble(array[3]);
    recarray[i].color = array[4];
    recarray[i].balance = Double.parseDouble(array[5]);
}

这假定每行的每个数据值都以相同的顺序(firstnamelastnameemail等)从文件中读取。