lundi 22 juin 2020

Can't figure why my if statement is not working

I can't figure out why my if statement is not working. For some reason it always evaluates first if statement as true, and in result outputs the wrong value.

With numberOfDays = 19 it should output 4.95, but instead it outputs 1.65, because it evaluates first if statement as true and doesn't change the value of 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());
    }
}

Aucun commentaire:

Enregistrer un commentaire