我希望Arrays能够记住这一切

时间:2012-01-02 17:15:18

标签: java arrays if-statement for-loop

这是关于我的任务所以我希望得到解释的一般答案。

我有一个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语句可以正常工作。但是,如果用户输入一个计算机订单一次,然后又输入3个订单,则订购另一台计算机,然后输出不会在新订单中添加先前的订单,但只会记住最新订单。

我很感激为此建议的任何工作,但同样,因为这是我的学习,我希望解释而不是直接的解决方案。

如果不清楚,请向我提问。

2 个答案:

答案 0 :(得分:1)

“忘记”表示您正在覆盖代码中的某些内容,而不是仅仅增加代码。浏览您的代码,查看在下新订单时它的哪些部分会被重置。例如,如果你正在做

quantity[1] = getNumberFromUser("How many apples?");

然后这显然会每次擦除旧值。如果您只想增加苹果的数量,请执行类似

的操作

quantity[1] += getNumberFromUser("How many apples?");

另一个一般建议是使用print语句来调试代码。这样你就可以亲眼看到真正发生的事情。学习使用真正的调试器也会带来很大的好处。

答案 1 :(得分: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
    }
}

或者如果您想分别拥有每种产品的历史记录,那么您必须尝试使用​​每种产品类型的价格数组。 如果你无法得到答案,那么在这里发表评论,