便宜
我必须编写一个收银机程序。该程序看起来像这样:
收银机计划。请给出物品价格,停止输入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;
}
}