首先我要说清楚这是作业。我对编程非常陌生,因此非常感谢所有指导。我必须计算的程序是停车费,最低2.00美元,3小时或更短,每小时0.50美分,费用上限为每24小时10美元。程序必须显示最近的客户费用以及运行总额。必须初始化常量,必须使用Math.ceil,并且必须使用方法calculateCharges来解决每个cust的费用。当我尝试运行这个程序时,我会遇到超级错误,当你看到它时你可能会笑,但我在哪里错了?我不是要找到给我的答案,只是寻找如何获得正确编写程序的逻辑。请帮忙!
package Parking;
import java.util.Scanner;
public class parking
{
private static final double THREE_HOURS = 2.00;
private static final double PER_HOUR_COST = .50;
private static final double WHOLE_DAY_COST = 10.00;
public static void main (String [] args)
{
double hoursParked = 0;
double cumulativeCharges = 0;
double storage1 = 0;
double storage2 = 0;
Scanner input = new Scanner(System.in);
System.out.print("\nThis program displays the charge for the most recent customer");
System.out.print(" as well as the running total of yesterday's receipts\n");
do
{ System.out.printf("Enter an number between 1-24 for hours parked in garage or -1 to quit:");
hoursParked = input.nextDouble ();
}
while((hoursParked > 0)&&(hoursParked <= 24)&&(hoursParked != -1));
if( hoursParked <= 3)
System.out.printf("Most recent customer's charge was: %.2f\n" , THREE_HOURS);
storage1 += THREE_HOURS;
if(hoursParked >= 18.01)
System.out.printf("Most recent customer's charge was:%.2f\n" , WHOLE_DAY_COST);
storage2 += WHOLE_DAY_COST;
double result = calculateCharges(hoursParked * PER_HOUR_COST);
System.out.printf("Most recent customer charge was:%.2f\n" , result);
cumulativeCharges = storage1 + storage2;
System.out.printf("Running total of yesterday's receipts is:%.2f\n" , cumulativeCharges);
} // end main
public static double calculateCharges (double hoursParked)
{
Math.ceil(hoursParked);
double total = hoursParked * PER_HOUR_COST;
return total;
} // end method calculateCharges
} // end class parking
答案 0 :(得分:0)
在你的while条件下,第三个条件是无用的,因为如果值是正数,那必然意味着它不是-1。
在您的功能中,您想要计算停车时间的成本,但是当您调用您的功能时,您将参数作为参数而不是数小时。这是正常的吗?有了这个,您将计算成本的成本,而不是相当于几个小时的成本。
public static double calculateCharges (double hoursParked)
和
double result = calculateCharges(hoursParked * PER_HOUR_COST);
答案 1 :(得分:0)
这里有几件事。
在do循环结束时检查你的while条件,它是允许你在阅读hoursParked后打破的。因此,如果hoursParked为-1,那么您将在do循环之外(在while之后)访问代码的唯一方法是。
其次,如果你的if条件没有大括号,你只需要执行第一行,也就是说。 System.out.print的。因此,您的第一个if条件将执行(打印字符串),然后在storage1中存储2.00。类似地,第二个if条件将执行(打印字符串),然后将10.00存储在storage2中。
因为hoursParked总是-1,所以你传入(-1 * .5)到calculateCharges。您没有存储Math.ceil()的结果,因此它实际上没有做任何事情。然后你返回(-.5 * .5)= -.25。
cumulativeCharges只是在每种情况下增加2 + 10。
建议 - 确保您在do循环中封装了要执行的代码,并且只有在您对hoursParked进行计算后才会中断。