我的第二个if和else if语句产生了错误的答案

时间:2017-11-09 22:35:53

标签: java if-statement

由于某种原因,我无法获得4张票的正确代码,相当于100张(没有oap / child折扣和5张票价折扣,4晚餐的费用使总票数达到180,然后乘以1.21等于217.9。如果我放了一个System.out.println(vatTotalNoAgeLess5);在第二个if块之外它会打印217.8但是如果我没有它给我4个oap / child ticket + 4个晚餐* 1.21的费用是195.65。

public static void main(String[] args) {
    //data dictionary
    double standT, terraceT, grossTick, handlingFee, ticketDiscount, flatFee, totalCost, agetick, over5tick,
    vatTotal, totaltick, dinnerPrice, dinnerTotal, vatTotalForAge, vatTotalNoAgeLess5;

    Scanner in = new Scanner(System.in);
    //gathering basic inputs from user  
    System.out.println("Input your name ");
    String name = in.next();
    System.out.println("Input your mobile number ");
    String mobile = in.next();
    System.out.println("How many stand tickets do you want? ");
    int standTick = in.nextInt();
    System.out.println("How many terrace tickets do you want? ");
    int terraceTick = in.nextInt();
    System.out.println("OAP/Student tickets? y/n");
    String ageDiscount = in.next();
    //basic fees as variables
    standT = 25 * standTick;
    terraceT = 20 * terraceTick;
    handlingFee = 7.50;
    dinnerPrice = 20;

    //defining the total cost variables
    grossTick = terraceT + standT;

    if(ageDiscount.equals("Y") || ageDiscount.equals("y"))
    {
        //System.out.println(grossTick);
        agetick = grossTick * 0.85;
        System.out.println("Before vat the total is " + agetick);
    }
    else if (ageDiscount.equals("N") || ageDiscount.equals("n"))
    {
        System.out.println("Before vat the total is " + grossTick);
    }
    else if(standTick + terraceTick >= 5)
    {
        over5tick = grossTick * 0.82;
        System.out.println("Before vat the total is " + over5tick);
    }
    else if (standTick + terraceTick < 5 )
    {
        System.out.println("Before vat the total is " + grossTick);
    }
    else if (ageDiscount.equals("Yes") || ageDiscount.equals("yes")  && standTick + terraceTick >= 5)
    {
        over5tick = grossTick * 0.82;
        System.out.println("Before vat the total is " + over5tick);
    }


    System.out.println("Will you be having dinner? y/n ");
    String havingDinner = in.next();

    if(havingDinner.equals("Y") || havingDinner.equals("y") || ageDiscount.equals("Y") || ageDiscount.equals("y"))
    {
        agetick = (grossTick * 0.85);
        dinnerTotal = dinnerPrice * (standTick + terraceTick);
        vatTotalForAge = ((dinnerTotal + agetick) * 1.21);
        System.out.println(vatTotalForAge);
    }
    else if (havingDinner.equals("Y") || havingDinner.equals("y")||ageDiscount.equals("N") || ageDiscount.equals("n"))
    {
        dinnerTotal = dinnerPrice * (standTick + terraceTick);
        vatTotalNoAgeLess5 = ((dinnerTotal + grossTick) * 1.21);
        System.out.println(vatTotalNoAgeLess5);
    }



    /*
    if(havingDinner.equals("Y") || havingDinner.equals("y")|| ageDiscount.equals("Y") || ageDiscount.equals("y")) 
    {
        agetick = (grossTick * 0.85);
        dinnerTotal = dinnerPrice * (standTick + terraceTick);
        vatTotalForAge = ((dinnerTotal + agetick) * 1.21);
        System.out.println(vatTotalForAge);
    }

    else if(havingDinner.equals("Y") || havingDinner.equals("y") || ageDiscount.equals("N") || ageDiscount.equals("n"))
    {
        dinnerTotal = dinnerPrice * (standTick + terraceTick);
        vatTotalNoAgeLess5 = ((dinnerTotal + grossTick) * 1.21);
        System.out.println("is");

    }
    dinnerTotal = dinnerPrice * (standTick + terraceTick);
    vatTotalNoAgeLess5 = ((dinnerTotal + grossTick) * 1.21);
    System.out.println(vatTotalNoAgeLess5);



    /*
    if( dinner > 0 || ageDiscount.equals("Yes") || ageDiscount.equals("yes"))
    {
        System.out.println("Total of dinner and vat is " +(( agetick + dinner)*1.21));
    }
    else if (dinner > 0||ageDiscount.equals("No") || ageDiscount.equals("no"))
    {
    System.out.println("Total of dinner and vat is " + ((grossTick + dinner)*1.21));
    }
    else if(dinner > 0||standTick + terraceTick >= 5)
    {
        System.out.println("Total of dinner and vat is " + (over5tick*1.21 + dinner));
    }
    else if (dinner > 0 ||standTick + terraceTick < 5 )
    {
        System.out.println("Total of dinner and vat is " + ((grossTick*1.21) + dinner));
    }
    else if (dinner > 0||ageDiscount.equals("Yes") || ageDiscount.equals("yes")  && standTick + terraceTick >= 5)
    {
        System.out.println("Total of dinner and vat is " + (over5tick*1.21 + dinner));
    }
    else if (dinner < 1 || ageDiscount.equals("No") || ageDiscount.equals("no"))
    {
    System.out.println("Total including and vat is " + grossTick*1.21);
    }
    else if(dinner < 1 ||standTick + terraceTick >= 5)
    {
        System.out.println("Total including and vat is " + over5tick*1.21);
    }
    else if (dinner < 1 ||standTick + terraceTick < 5 )
    {
        System.out.println("Total including and vat is " + grossTick*1.21);
    }
    else if (dinner < 1 || ageDiscount.equals("Yes") || ageDiscount.equals("yes")  && standTick + terraceTick >= 5)
    {
        System.out.println("Total including and vat is " + over5tick*1.21 );
    }
    */
}

}

1 个答案:

答案 0 :(得分:1)

BigDecimal 使用示例

vatTotalNoAgeLess5 = BigDecimal.valueOf(dinnerTotal).add(BigDecimal.valueOf(grossTick)).multiply(BigDecimal.valueOf(1.21)).doubleValue();

示例 if statement

if ((havingDinner.equals("Y") || havingDinner.equals("y")) && (ageDiscount.equals("Y") || ageDiscount.equals("y"))) {
    agetick = (grossTick * 0.85);
    dinnerTotal = dinnerPrice * (standTick + terraceTick);
    vatTotalForAge = ((dinnerTotal + agetick) * 1.21);
    System.out.println(vatTotalForAge);
} else if ((havingDinner.equals("Y") || havingDinner.equals("y")) && (ageDiscount.equals("N") || ageDiscount.equals("n"))) {
    dinnerTotal = dinnerPrice * (standTick + terraceTick);
    vatTotalNoAgeLess5 = ((dinnerTotal + grossTick) * 1.21);
    System.out.println(vatTotalNoAgeLess5);
}