Java 解决停车场收费问题

Java 解决停车场收费问题,java,algorithm,Java,Algorithm,我有个问题 前3小时停车费为每小时3美元,每多出一小时收费1美元,24小时收费30美元,但您可以停留24小时以上。 我不知道如何解决小时数>24的问题,就像汽车在那里停留37小时或更长时间一样。我认为,模数必须用于此,不幸的是,我不能让它工作。有什么帮助吗 if (hours >= 24) { price = 30; price += (hours - 3) % 1; //should the mod even go here

我有个问题


前3小时停车费为每小时3美元,每多出一小时收费1美元,24小时收费30美元,但您可以停留24小时以上。 我不知道如何解决小时数>24的问题,就像汽车在那里停留37小时或更长时间一样。我认为,模数必须用于此,不幸的是,我不能让它工作。有什么帮助吗

        if (hours >= 24) {
            price = 30;
            price += (hours - 3) % 1; //should the mod even go here?
        } else if (hours < 24 && hours > 3) {
            price = 9;
            price += (hours - 3) * 1;
        } else {
            price = hours * 3;
        }
        System.out.println("Hours: " + hours + " Price: " + price);
如果(小时数>=24){
价格=30;
价格+=(小时-3)%1;//国防部是否应该到这里来?
}否则如果(小时数<24小时和小时数>3){
价格=9;
价格+=(小时数-3)*1;
}否则{
价格=小时*3;
}
系统输出打印项次(“小时数:+小时数+”价格:+价格);
这项工作:

if (hours >= 24) {
    price = (hours / 24)*30;
    int h = hours%24;
    int h4 = Math.min(h, 3)*2;
    price += h4 +((hours)%24);

} else if (hours < 24 && hours > 3) {
    price = 9;
    price += (hours - 3) * 1;
} else {
    price = hours * 3;
}
System.out.println("Hours: " + hours + " Price: " + price);
如果(小时数>=24){
价格=(小时/24)*30;
int h=小时数%24;
int h4=数学最小值(h,3)*2;
价格+=h4+((小时)%24);
}否则如果(小时数<24小时和小时数>3){
价格=9;
价格+=(小时数-3)*1;
}否则{
价格=小时*3;
}
系统输出打印项次(“小时数:+小时数+”价格:+价格);
这项工作:

if (hours >= 24) {
    price = (hours / 24)*30;
    int h = hours%24;
    int h4 = Math.min(h, 3)*2;
    price += h4 +((hours)%24);

} else if (hours < 24 && hours > 3) {
    price = 9;
    price += (hours - 3) * 1;
} else {
    price = hours * 3;
}
System.out.println("Hours: " + hours + " Price: " + price);
如果(小时数>=24){
价格=(小时/24)*30;
int h=小时数%24;
int h4=数学最小值(h,3)*2;
价格+=h4+((小时)%24);
}否则如果(小时数<24小时和小时数>3){
价格=9;
价格+=(小时数-3)*1;
}否则{
价格=小时*3;
}
系统输出打印项次(“小时数:+小时数+”价格:+价格);
如果(小时数>0){
如果(小时数>3小时和小时数<24小时){
价格=3+小时;
}
如果(小时数>=24){
价格=30;
}
}
注意:如果停车的人在24小时后仍按每小时1美元收费,则:

if(hours > 0) {
  if(hours > 3 && hours < 24) {
    price = 3 + hours;
  }
  if(hours >= 24) {
    price = 30 + hours - 24;
  }
}
if(小时数>0){
如果(小时数>3小时和小时数<24小时){
价格=3+小时;
}
如果(小时数>=24){
价格=30+小时-24小时;
}
}
如果(小时数>0){
如果(小时数>3小时和小时数<24小时){
价格=3+小时;
}
如果(小时数>=24){
价格=30;
}
}
注意:如果停车的人在24小时后仍按每小时1美元收费,则:

if(hours > 0) {
  if(hours > 3 && hours < 24) {
    price = 3 + hours;
  }
  if(hours >= 24) {
    price = 30 + hours - 24;
  }
}
if(小时数>0){
如果(小时数>3小时和小时数<24小时){
价格=3+小时;
}
如果(小时数>=24){
价格=30+小时-24小时;
}
}

根据您的规格,它应该简单到:

    price = Math.min(hours, 3) * 3 + Math.max(hours - 3, 0) * 1;
    System.out.println("Hours: " + hours + " Price: " + price);
更新:

    price = (hours / 24) * 30 + Math.min(hours % 24, 3) * 3 + Math.max(hours % 24 - 3, 0) * 1;

根据您的规格,它应该简单到:

    price = Math.min(hours, 3) * 3 + Math.max(hours - 3, 0) * 1;
    System.out.println("Hours: " + hours + " Price: " + price);
更新:

    price = (hours / 24) * 30 + Math.min(hours % 24, 3) * 3 + Math.max(hours % 24 - 3, 0) * 1;

修改@bohuss的解决方案以修复问题超过24小时:

private static int calculatePrice(final int hours) {
    // find number of days [where 1 day is 24 hours]
    final int days = hours / 24;
    // calculate price based on 1 day's fixed price as $30
    int price = 30 * days;
    // find remaining hours
    final int remainingHours = hours % 24;
    // calculate price for remaining hours and add to price for entire days.
    price += Math.min(remainingHours, 3) * 3 + Math.max(remainingHours - 3, 0) * 1;
    // return total price
    return price;
}
输入/输出示例

时间:0价格:0 时间:1价格:3 时间:2价格:6 时间:3价格:9 时间:4价格:10 时间:5价格:11 时间:6价格:12 ... 时间:22价格:28 时间:23价格:29 营业时间:24小时价格:30 小时:25价格:33 时间:26价格:36 工时:27价格:39 小时:28价格:40
修改@bohuss的解决方案以修复问题超过24小时:

private static int calculatePrice(final int hours) {
    // find number of days [where 1 day is 24 hours]
    final int days = hours / 24;
    // calculate price based on 1 day's fixed price as $30
    int price = 30 * days;
    // find remaining hours
    final int remainingHours = hours % 24;
    // calculate price for remaining hours and add to price for entire days.
    price += Math.min(remainingHours, 3) * 3 + Math.max(remainingHours - 3, 0) * 1;
    // return total price
    return price;
}
输入/输出示例

时间:0价格:0 时间:1价格:3 时间:2价格:6 时间:3价格:9 时间:4价格:10 时间:5价格:11 时间:6价格:12 ... 时间:22价格:28 时间:23价格:29 营业时间:24小时价格:30 小时:25价格:33 时间:26价格:36 工时:27价格:39 小时:28价格:40

如何在24小时内计费?如果他们在那里呆了37个小时,会不会是30美元加17个小时?每小时1美元??如果是这样,那么“24”部分似乎完全不相关。前三个小时是一回事,其余的时间是另一回事。当前代码以何种方式失败?例如,ye停留25小时的价格应为33$@BlackHatSamurai。还要注意的是,3*$3+(24小时-3小时)*$1=$30,那么24小时标志真的有什么特别之处吗?如果你的停车总时间是以小时为单位的,除以1天,你就可以得到总天数,前提是你要了解结果(因为你想要一个整数)。如果你修改了一天,你得到的奇数小时数不算整天(如果有的话)。您需要同时使用这两种方法。如何在24小时内计费?如果他们在那里呆了37个小时,会不会是30美元加17个小时?每小时1美元??如果是这样,那么“24”部分似乎完全不相关。前三个小时是一回事,其余的时间是另一回事。当前代码以何种方式失败?例如,ye停留25小时的价格应为33$@BlackHatSamurai。还要注意的是,3*$3+(24小时-3小时)*$1=$30,那么24小时标志真的有什么特别之处吗?如果你的停车总时间是以小时为单位的,除以1天,你就可以得到总天数,前提是你要了解结果(因为你想要一个整数)。如果你修改了一天,你得到的奇数小时数不算整天(如果有的话)。您需要在24小时后使用这两个选项,前3小时仍为3$,3小时后为1$,但请注意,3$*3小时后为30$,因此仍然有效。24小时为30$,但您可以停留超过24小时。因此,24小时住宿=30美元,然后25小时住宿=33美元,26小时住宿=36美元,27小时停留=39美元,则每小时额外花费1美元,直到到达48小时,价格为60美元,依此类推小时数:28价格:36.0不幸的是,它不起作用,因为28小时应给予40$@tomaszsvd立即试用24小时后,前3小时仍为3美元,3小时后为1美元,但请注意,3$*3小时后为30美元,所以这仍然有效。24小时是30美元,但你可以停留超过24小时。因此,24小时停留=30美元,然后25小时停留=33美元,26小时停留=36美元,27小时停留=39美元,然后每小时额外花费1美元,直到到达48小时,价格为60美元,依此类推。小时数:28价格:36.0不幸的是,它不起作用,因为28小时应该给40美元@tomaszsvd立即尝试。当小时数>24时,这不会给出正确的价格。24小时后,前3小时的费用为3美元/小时,每增加一小时的费用为1美元!当小时数>24小时时,这不会给出正确的价格。24小时后,前3小时的费用为3美元/小时,每增加一小时的费用为1美元!看起来你是对的:)规范不清楚,但是calculatePrice(25)=33个清除的东西的例子看起来像是