我希望数组能够记住所有的东西。

3
这是关于我的作业的内容,我希望得到通用的答案和解释。
我有一个for循环,需要为在线订购系统编写。 for循环和订购都正常工作,但如果同一项产品被两次放入订单,则会遗忘先前的订单并只记住最新的订单。我需要使用简单的数组和for循环,因此如果解决方案/帮助也是基础级别的话,我将不胜感激。
我的代码大致如下(注意:以下只是循环的部分示例--这不是完整的程序):
for (int i = 0; i < 3; i++) { //I changed the loop so there's no confusion about
                              //what I am actually asking about.
    if (order.equalsIgnoreCase(computer) {
         int price = quantity[i] + itemcode;
    }
}

进一步解释,如果某个项目只被订购一次,则此循环和if语句完美地运作。但是,如果用户首先订购一台计算机,然后在另外三笔订单之后再次订购一台计算机,那么输出不会将上一个订单加入新订单中,而只会记住最新的订单。
我会感激任何提出的解决方法,但是由于这是我的学习,因此我希望得到解释而不是直接的解决方案。
如果不清楚,请向我提问。

1
“忘记了先前的顺序”是什么意思? - Dave Newton
2
@nickecarlo 如果你使用for循环的方式是在自找麻烦。 - soulcheck
“price”变量是什么?你只是设置它,是这样的吗?因为之前设置的任何值都将被覆盖。 - Jesper Fyhr Knudsen
@soulcheck,你能否详细说明你的意思? - Nico
1
你一直在谈论数组,但没有展示它在哪里声明以及如何使用。我们怎么知道为什么它不记住顺序呢? - Bhesh Gurung
显示剩余7条评论
2个回答

1
“忘记”意味着你在代码中覆盖了某些内容,而不是仅仅增加。检查你的代码,看看当你下新订单时哪些部分会被重置。例如,如果你正在执行以下操作: quantity[1] = getNumberFromUser("How many apples?"); 那么这显然会每次擦除旧值。如果你想仅仅增加苹果的数量,请执行以下操作: quantity[1] += getNumberFromUser("How many apples?"); 另一个通用建议是使用打印语句来调试你的代码。这样你就可以自己看到发生了什么。学习使用真正的调试器也将大有裨益。

谢谢你的回答,让我试一下。我没有发布整个代码,因为这是我的大学作业,很多学生使用这个网站寻求帮助。他们对抄袭非常严格,我不想冒任何风险。让我尝试你的建议,然后我会告诉你它的进展情况。 - Nico
这正是我想要的。谢谢!虽然它相当基础,但我几乎没有编程经验,所以有时可能会卡住。 - Nico
只是为了明确,我所要做的就是将“=”更改为“+ =”。所有有经验的程序员可能会想“哦,这个新手”,但对于像我这样从未学过编程但现在不得不学习的人来说,这确实很困难,因为我现在正在上大学。 - Nico
我们很高兴为您提供服务。 - Christian Neverdal

1
如果您有两种或更多种类的产品,并且想要计算所有订单的价格,则可以尝试以下代码,我认为这非常简单。
int price=0;
for (int i = 0; i < 3; i++) { //I changed the loop so there's no confusion about
                              //what I am actually asking about.
    if (order.equalsIgnoreCase(computer) {
          price += quantity[i] + itemcode; //use the previous value of price
    }
}

或者,如果您想为每个产品单独保留历史记录,则必须尝试使用每种产品类型的价格数组进行相同操作。

如果您无法获得答案,请在此处发表评论。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接