试图为不同的时间付出不同的代价-Java

试图为不同的时间付出不同的代价-Java,java,math,Java,Math,我试图使我的代码,使其成本更高的数字7以上,它将成本1法郎每小时之间的0-7和2法郎的时间从8-24。现在我有这个: int start = user_input.nextInt(); int finish = user_input.nextInt(); int hours = finish - start; int hours2 = finish - start; int francs1 = 1 * hours; int francs2 = 2 * hours; if (start >

我试图使我的代码,使其成本更高的数字7以上,它将成本1法郎每小时之间的0-7和2法郎的时间从8-24。现在我有这个:

int start = user_input.nextInt();
int finish = user_input.nextInt();
int hours = finish - start;
int hours2 = finish - start;
int francs1 = 1 * hours;
int francs2 = 2 * hours;
if (start > 0 && finish < 7){
            System.out.println(hours + " hour(s) at a cost of " + francs1 + " francs");
        }else{
            if (start > 7 && finish < 24){
                System.out.println(hours2 + " hour(s) at a cost of " + francs2 + " francs");
            }else{
                if (start < 7 && finish > 7){
int start=user_input.nextInt();
int finish=user_input.nextInt();
整小时=完成-开始;
int hours2=完成-开始;
int francs1=1*小时;
int francs2=2*小时;
如果(开始>0和结束<7){
系统输出打印项次(小时数+小时数,成本为+法郎1+法郎);
}否则{
如果(开始>7和结束<24){
系统输出打印项次(小时2+小时,成本为“+法郎2+法郎”);
}否则{
如果(开始<7&结束>7){

“开始”是用户输入的第一个值,“完成”是第二个值。

您正在寻找类似的值吗

int start = 8
int end = 10
int leftHandDiff = Math.min(7, end) - start
int rightHandDiff = end - Math.max(7, start)
int francs1 = (leftHandDiff > 0 ? leftHandDiff : 0) * 1
int francs2 = (rightHandDiff > 0 ? rightHandDiff : 0) * 2

当然,您必须包括您的验证,以便小时数不低于0或大于24,并且开始时间不在结束时间之后。

是的,我有验证,以便它不能小于0或大于24,我正在尝试这样做,如果有人输入,例如,4和12,它将从4-7添加3法郎,从8添加8法郎-12,显示用户欠11法郎。我的回答是这样的。检查一下,你有没有想过如果开始是4,结束是8,会发生什么?我的意思是第8小时应该算2或1?我认为4-12应该是(4-7)*1+(12-7)*2,否则您将从第7小时到第8小时失去时间。无论您需要什么,您都可以更改行中的常量:int leftHandDiff=Math.min(7,end)-start和int rightHandDiff=end-Math.max(7,start)谢谢,成功了!我本来打算在结束后解决8个问题的。顺便说一句,如果你真的在处理时间值,请注意课堂。