简单的java:if语句出错

时间:2015-10-21 16:53:00

标签: java if-statement java.util.scanner

所以我一直试图在过去的5个小时内解决这个问题,原因是...从初学者的角度来看这个代码看起来很好没有错误但输出仍然是错误的...基本上每10个孩子们的门票是免费的,所以如果免费门票少于成人,那么输出就很好,但是当它相反时它会减去额外的成年人。

package theatre;

import java.util.*;

public class Theatre {

    public static void main(String[] args) {
        Scanner kybd = new Scanner(System.in);
        System.out.println("Enter the number of tickets you would like to buy for each type: ");
        System.out.println("Adult:          £10.50");
        System.out.println("Child:          £7.30");
        System.out.println("Concessions     £8.40");
        System.out.println("Adult: ");
        int Adult = kybd.nextInt();
        System.out.println("Child: ");
        int Child = kybd.nextInt();
        System.out.println("Concessions: ");
        int concessions = kybd.nextInt();

        int freeAdult = Child / 10;
        if (freeAdult < 9) {
            System.out.println("You get " + freeAdult + " adult tickets");
        } else {
            System.out.println("You don't get any free tickets");
        }
        System.out.println(freeAdult); //reference out
        double adultBill = (Adult * 10.50) - (freeAdult * 10.50);
        double childBill = Child * 7.30;
        double concessionsBill = concessions * 8.40;
        double totalBill = adultBill + childBill + concessionsBill;
        double totalBill2 = childBill + concessionsBill;

        System.out.println(totalBill2); //reference out
        if (freeAdult >= Adult) {
            System.out.printf("Total bill is: £%.2f\n", totalBill);
        } else if (freeAdult < Adult) {

            System.out.printf("Total bill is: £%.2f\n", totalBill2);
        } else {
            System.out.println("Please enter a corrrect value");
        }



    }

}

由于

2 个答案:

答案 0 :(得分:2)

我认为你的逻辑有点困惑:

int freeAdult = Child / 10;
if (freeAdult < 9) {
    System.out.println("You get " + freeAdult + " adult tickets");
} else {
    System.out.println("You don't get any free tickets");
}

似乎是根据儿童票的数量(Child / 10)来计算这个人获得的免费成人票数...但是如果他们有资格获得超过票价,他们就会说没有票10?我想你可能在这里使用了错误的变量。然后:

double adultBill = (Adult * 10.50) - (freeAdult * 10.50);
double childBill = Child * 7.30;
double concessionsBill = concessions * 8.40;
double totalBill = adultBill + childBill + concessionsBill;
double totalBill2 = childBill + concessionsBill;
System.out.println(totalBill2); //reference out
if (freeAdult >= Adult) {
    System.out.printf("Total bill is: £%.2f\n", totalBill);
} else if (freeAdult < Adult) {
    System.out.printf("Total bill is: £%.2f\n", totalBill2);
} else {
    System.out.println("Please enter a corrrect value");
}

我认为是要计算2张账单,一张包括成人,一张不是,然后如果免费成人票的数量大于成人的数量,则丢弃第一张账单并使用第二张(从未包括成人计算) ),在这种情况下,你的if语句错误,应该是:

if (freeAdult < Adult) {
    System.out.printf("Total bill is: £%.2f\n", totalBill);
} else if (freeAdult >= Adult) {
    System.out.printf("Total bill is: £%.2f\n", totalBill2);

...但是,您只需通过简单地将成人计算更改为:

来计算一个帐单
double adultBill = freeAdult < Adult ? (Adult * 10.50) - (freeAdult * 10.50) : 0;

然后正常计算账单:

double totalBill = adultBill + childBill + concessionsBill;
System.out.printf("Total bill is: £%.2f\n", totalBill);

答案 1 :(得分:0)

public class Theatre {

    public static void main(String[] args) {
        Scanner kybd = new Scanner(System.in);
        System.out.println("Enter the number of tickets you would like to buy for each type: ");
        System.out.println("Adult:          £10.50");
        System.out.println("Child:          £7.30");
        System.out.println("Concessions     £8.40");
        System.out.println("Adult: ");
        int adult = kybd.nextInt();
        System.out.println("Child: ");
        int child = kybd.nextInt();
        System.out.println("Concessions: ");
        int concessions = kybd.nextInt();

        int freeAdult = child / 10;
        System.out.println("You get " + freeAdult + " adult tickets free");
        if(adult >0){
            adult = adult - freeAdult;
        }
        double adultBill = (adult * 10.50);
        double childBill = child * 7.30;
        double concessionsBill = concessions * 8.40;
        double totalBill = adultBill + childBill + concessionsBill;

        System.out.printf("Total bill is: £%.2f\n", totalBill);

    }

}