Java收银机计划



我必须编写一个收银机程序。该程序看起来像这样:

收银机计划。请给出物品价格,停止输入0。459315112534563960总和5751英尺平均1150,20英尺。最昂贵的3456英尺。最昂贵的是200,47% - 比平均水平昂贵。总共3件便宜的500英尺

    Scanner sc = new Scanner(System.in);
    double average = 0;
    int sum = 0;
    int mostExpensive = 0;
    int smaller500 = 0;
    System.out.println("Cash register program, please give prices, stops when 0 entered");
    int prices = sc.nextInt();
    sum += prices;
    for (double i=1; prices != 0; i++)
    {
        prices = sc.nextInt();
        if (prices < 500)
        {
            smaller500++;
        }
        sum += prices;
        average = i;
        if (prices > mostExpensive )
        {
            mostExpensive = prices;
        }
    }
    System.out.println("Total amount "+sum+" Ft.");
    System.out.printf("Average is %.2f Ft. %n",sum/average);
    System.out.println("Most expensive is "+mostExpensive+" Ft.");
    System.out.printf("The most expensive is %.2f%% expensive then the average.%n",(mostExpensive/(sum/atlag))*100-100);
    System.out.println("Totally "+smaller500+" pcs. cheaper then 500 FT.");
}

}

该程序有什么问题?如果我只给一个项目,那么给出了什么号码,它说1个项目比500英尺

便宜

如果为prices输入零,则应该退出循环。但是在此之前,所有这些代码都会运行:

    prices = sc.nextInt();
    if (prices < 500)
    {
        smaller500++;
    }
    sum += prices;
    average = i;
    if (prices > mostExpensive )
    {
        mostExpensive = prices;
    }

哪个(除其他外)会增加变量smaller500

您可以在末尾而不是开始时更改为输入prices,因此可以立即检查循环条件;或者,当输入零时,您可以简单地脱离循环。

for (double i=1; prices != 0; i++)
{
    prices = sc.nextInt();
    if (prices == 0) {
        break;
    }
    if (prices < 500)
    {
        smaller500++;
    }
    sum += prices;
    average = i;
    if (prices > mostExpensive )
    {
        mostExpensive = prices;
    }
}

最新更新