我不知道为什么我的if
语句不起作用。由于某些原因,它总是将第一个if
语句评估为true
,结果输出错误的值。
使用numberOfDays = 19
时,它应该输出4.95
,但是输出1.65
,因为它将第一个if
语句评估为true
,并且不更改numberOf7DayPasses
的值:
class TransitCalculator {
int numberOfRides;
int numberOfDays;
double[] prices = { 2.75, 33.00, 127.00 };
public TransitCalculator(int myRides, int myDays) {
numberOfRides = myRides;
numberOfDays = myDays;
}
public double unlimited7Price() {
int numberOf7DayPasses = 1;
if (numberOfDays % 7 != 0 && numberOfDays / 7 != 1 && numberOfDays / 7 > 1 && numberOfDays / 7 < 2) {
numberOf7DayPasses = 2;
} else if (numberOfDays % 7 != 0 && numberOfDays / 7 != 2 && numberOfDays / 7 > 2 && numberOfDays / 7 < 3) {
numberOf7DayPasses = 3;
} else if (numberOfDays % 7 != 0 && numberOfDays / 7 != 3 && numberOfDays / 7 > 3 && numberOfDays / 7 < 4) {
numberOf7DayPasses = 4;
} else if (numberOfDays % 7 != 0 && numberOfDays / 7 != 4 && numberOfDays / 7 > 4 && numberOfDays / 7 < 5) {
numberOf7DayPasses = 5;
} else if (numberOfDays % 7 == 0 && numberOfDays / 7 == 1) {
numberOf7DayPasses = 1;
} else if (numberOfDays % 7 == 0 && numberOfDays / 7 == 2) {
numberOf7DayPasses = 2;
} else if (numberOfDays % 7 == 0 && numberOfDays / 7 == 3) {
numberOf7DayPasses = 3;
} else if (numberOfDays % 7 == 0 && numberOfDays / 7 == 4) {
numberOf7DayPasses = 4;
} else if (numberOfDays % 7 == 0 && numberOfDays / 7 == 5) {
numberOf7DayPasses = 5;
}
double priceOfOneRide = numberOf7DayPasses * prices[1] / numberOfRides;
return priceOfOneRide;
}
public static void main(String[] args){
TransitCalculator testPerson = new TransitCalculator(20, 19);
System.out.println(testPerson.unlimited7Price());
}
}
答案 0 :(得分:0)
您说您认为它返回1.65是因为第一个条件被评估为真?因此,我想您没有使用调试器来遍历代码以查看实际发生的事情!
如果将第一个条件评估为true,则输出将为3.3(= 2 * 33/20) 输出为1.65,这意味着没有一个条件的计算结果为true。
第一个条件(以及第2个,第3个和第4个条件)无法求值为true,因为它们始终为false。第一个条件包含:
numberOfDays / 7 > 1 && numberOfDays / 7 < 2
NumberOfDays是一个int,因此numberOfDays / 7的结果也是一个int。 一个int不能大于1且小于2。因此条件始终为false。在第二,第三和第四条件下,数字不同,但是它们具有相同的问题。