【问题标题】:Java creating multiple objectsJava 创建多个对象
【发布时间】:2014-12-09 19:40:49
【问题描述】:

我创建了一个类来定义名为Data 的对象,它将行号、变量值和变量名存储在字符串中。 我想用从 txt 文件中获取并存储在字符串变量line 中的信息填充数据对象,并且我正在使用下面的 while 循环来填充我的数据对象:

while(line !=null){
            input.setLN(line);
            line = inputBuffer.readLine();
            input.setVN(line);
            line = inputBuffer.readLine();
            input.setVV(line);
            line = inputBuffer.readLine();
            counter ++;

但是,然后我想将每个 Data 对象添加到 Vector(必须使用 Vector 完成),这样我就可以存储每个 LN、VN、VV 并能够从向量。

我已使用以下代码声明了 Data 对象的向量:

Vector<Data> myVector=new Vector<Data>();

但是,while 循环的每次迭代都会覆盖分配给数据对象的先前值,因此当我在 while 循环底部使用以下代码时,向量中只会存储一个 Data 对象:

myVector.add(input);

我知道我需要在循环的每次迭代之后创建input 的副本,并将该副本存储到Vector 中,然后再将新值放入input,但是我不确定如何最好这样做。

任何建议表示赞赏

【问题讨论】:

  • 变量范围在这里很重要。如果您在“while”循环之前声明了“input”,则只会创建一个实例,因此您对其所做的每一项更改都将反映在向量的内容中。 Eran 的回答很好,因为“Data”对象在循环内创建,所以每次迭代都会创建一个新实例。
  • 我将如何/在哪里将这些 Data 对象添加到我的 Vector 中?
  • “数据输入 = new Data();”之间的任何位置你的循环结束会很好

标签: java loops object vector while-loop


【解决方案1】:

我知道我需要在循环的每次迭代之后创建一个输入副本,并将该副本存储到 Vector 中,然后再将新值输入输入,但是我不确定如何最好地做到这一点。

怎么样:

while(line !=null) {
    Data input = new Data();
    input.setLN(line);
    line = inputBuffer.readLine();
    input.setVN(line);
    line = inputBuffer.readLine();
    input.setVV(line);
    line = inputBuffer.readLine();
    counter ++;
    ...
    myVector.add(input);
}

【讨论】:

  • 我将如何/在哪里将这些 Data 对象添加到我的 Vector 中?
  • @AndiStevenson 您将在循环的每次迭代结束时添加它们。见编辑
猜你喜欢
  • 2021-07-29
  • 2015-08-03
  • 2018-08-19
  • 1970-01-01
  • 1970-01-01
  • 2011-11-21
  • 2017-09-21
  • 1970-01-01
  • 2014-12-10
相关资源
最近更新 更多