java - 在 Java 中将多个对象添加到列表时遇到问题
问题描述
我有一个用 Java 编写的基本投资计算器,但我似乎无法将多个投资对象添加到 ArrayList。以下是一些基础知识(问题行在“如果添加 401k”块中):
public static void main(String[] args) {
input = new Scanner(System.in);
ArrayList<Investment> invList = new ArrayList();
int mainChoice = Util.mainMenu();
while(3 != mainChoice) {
//Add new investment
if (1 == mainChoice) {
int invChoice = Util.invMenu();
//If adding a 401k
if (1 == invChoice) {
//gets info from user, these get passed as arguments when creating new object below
//RetPlan401k extends the Investment superclass
RetPlan401k inv = new RetPlan401k(invName, bal401k, contrb401k, ret401k, match, cap);
invList.add(inv);
}
...
我从调试中知道,我可以将任意数量的投资对象添加到列表中,但是当我去打印每个对象的信息时(为了简单起见,让我们说一下:
(for int i = 0; i < invList.size(); ++i){
System.out.print("Investment name: " + invList.get(i).getName());
})
它打印最近添加的 invList.size() 次对象的名称。即我有 invList.size() 对象,所有这些都包含完全相同的信息。
这就像这里的数据结构 101,但我有一点时间,只是没有看到它。为什么不是每个投资对象都根据输入的方式打印?谢谢您的帮助。
解决方案
问题解决了......原来我的对象类中有一些错误的“静态”关键字。每次都会得到你。谢谢大家。
推荐阅读
- jenkins - 我想从其他参数创建一个参数值
- java - 运行 GWT 应用程序时出现 jreLeakPrevention.gcDaemonFail 错误
- node.js - 如何在 Heroku 服务器上使用 express.static 正确提供静态资产?
- mysql - “交叉表”查询仅显示最近的结果
- regex - 三个字母和四个数字的正则表达式?
- cors - Akamai 是否可以将传入请求的 Origin 标头用作变量(用于填充 CORS Access-Control-Allow-Origin 标头)?
- mysql - 如何使用mysql中的两列对表数据进行分组
- c# - 将没有分隔符和 100 多列的 4 GB 固定列宽文本文件转换为修剪后的制表符分隔文件
- javascript - 我有办法在不影响 Javascript 滚动事件的情况下将 overflow-x: hidden 添加到 html 和 body 吗?
- python - 如何在django rest框架中根据Queryset返回结果?