这是我想在我的项目中要做的事情:
这是您要做的:使用以下命令创建一个名为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。谢谢!
答案 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]);
}
这假定每行的每个数据值都以相同的顺序(firstname
,lastname
,email
等)从文件中读取。