【问题标题】:JAVA: How to calculate sum of user-inputted numbers in a loop (numbers are stored in same variable)JAVA:如何在循环中计算用户输入数字的总和(数字存储在同一个变量中)
【发布时间】:2015-03-08 03:07:11
【问题描述】:

此代码是收据程序的一部分。我循环它,以便用户可以输入商品价格(最多 20 件商品)。我需要打印所有项目价格的总和。请注意,所有商品价格都存储在同一个双变量 newItemPrice 中。这甚至可能吗?如果没有,请给我一个关于另一种方法的想法。

while(x < 20){//maximum of 20 items

    x++;//item # (x was decalred as an integer of 1)

    System.out.println("\nEnter new item's price");
    Scanner newItemPriceSC = new Scanner(System.in);
    Double newItemPrice = newItemPriceSC.nextDouble();//scans next double (new item's price)

    System.out.println("ITEM # " + x + "\t" + "$" + newItemPrice);//item prices
    System.out.println("\n");

    System.out.println("type \"no more!\" if there are no more items\ntype any other word to continue");
    Scanner continueEnd = new Scanner(System.in);
    String answ = continueEnd.nextLine();       

    if(!(answ.equals("no more!"))){
        continue;
    }


    if(answ.equals("no more!")){
        break;//ends loop
    }

    break;//ends loop (first break; was for a loop inside of this loop)

【问题讨论】:

    标签: java loops while-loop sum add


    【解决方案1】:

    在你的 while 开始之前声明一个新变量:

    double total = 0;
    

    然后在你的循环中添加一行代码:

    Scanner newItemPriceSC = new Scanner(System.in);//your code
    Double newItemPrice = newItemPriceSC.nextDouble();//your code
    total +=newItemPrice; //this is the new line
    

    当周期结束时,“total”变量将包含所有输入价格的总和。

    【讨论】:

    • 谢谢。我被这个问题困了一个多小时。但是,如果您不介意,请告诉我您的解决方案是如何工作的。在循环之外声明“total”有什么意义?
    • @ben1123 您在循环之外声明了这个变量,此时它等于 0。然后循环开始。您将获得下一个 Double(例如 4 个,5 个)。然后将下一个数字添加到变量总数中。然后循环进入下一个循环,但您的总变量已经等于 5 但不为零。你得到另一个双倍(例如,12),你把它加到总数中,所以现在总数等于 17(5 + 12)。依此类推,直到您的循环停止。表达式“total +=newItemPrice;”表示总计 = 总计 + newItemPrice。
    • 如果你在循环中声明了总变量,它会在循环的每次迭代中被重新创建并初始化为 0。这意味着您不会从之前的迭代中保留任何信息,这就是您在循环之外声明此变量的原因。
    • 这正是之前发生的事情。变量每隔一段时间就会一直重置为零。现在很有意义。再次感谢。
    【解决方案2】:

    您可以使用 newItemPrice 来累积所有价格,只需将其与当前扫描的价格相加即可。

    Double newItemPrice += newItemPriceSC.nextDouble();
    

    但是,您将无法在下一行打印出价格。

    您需要在 newItemPriceSC.nextDouble() 的结果中引入一个临时变量,以便将其打印出来。如果您失去了打印出商品价格的要求,那么您不需要临时值。

    【讨论】:

      猜你喜欢
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-27
      • 1970-01-01
      • 2022-11-17
      • 2011-12-29
      • 1970-01-01
      相关资源
      最近更新 更多