【问题标题】:How would I put strings into my object array?我如何将字符串放入我的对象数组中?
【发布时间】:2018-09-25 23:16:40
【问题描述】:

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

这是你要做的:创建一个名为 MyRecord (MyRecord.java) 的类 变量名、姓、电子邮件、身份证号码、颜色和平衡。使用 每个字段的适当数据类型。

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

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 还很陌生。谢谢!

【问题讨论】:

    标签: java arrays object netbeans


    【解决方案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 等)从文件中读取。

    【讨论】:

    • 也许值得注意的是,id 是双精度对我来说似乎很奇怪。 Stringint
    • @ScaryWombat 是的,我也是这么想的。我想这正是 OP 想要的。
    【解决方案2】:

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

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

    然后,当您到达double 时,您可以执行以下操作:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-06
      • 1970-01-01
      • 2021-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      相关资源
      最近更新 更多