简单java:if语句错误

简单java:if语句错误,java,if-statement,java.util.scanner,Java,If Statement,Java.util.scanner,在过去的5个小时里,我一直在试图弄明白这一点,原因是…从初学者的角度来看,这段代码看起来不错,没有错误,但输出仍然是错误的…基本上每10张儿童票,用户就可以得到一张免费票,因此,如果免费票少于成人票,那么输出是好的,但反过来,它减去了额外的成人票 package theatre; import java.util.*; public class Theatre { public static void main(String[] args) { Scanner ky

在过去的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");
        }



    }

}
package剧场;
导入java.util.*;
公营剧院{
公共静态void main(字符串[]args){
扫描仪kybd=新扫描仪(System.in);
System.out.println(“输入您想为每种类型购买的票证数量:”;
System.out.println(“成人:10.50英镑”);
系统输出打印项次(“子女:7.30英镑”);
系统输出打印项次(“8.40英镑的特许权”);
System.out.println(“成人:”);
int成人=kybd.nextInt();
System.out.println(“子项:”);
int Child=kybd.nextInt();
System.out.println(“特许权:”);
int=kybd.nextInt();
成人=儿童/10;
如果(成人<9){
System.out.println(“您获得”+免费成人+成人票”);
}否则{
System.out.println(“你没有得到任何免费门票”);
}
System.out.println(Free成人);//引用输出
双倍成人账单=(成人*10.50)-(免费成人*10.50);
双倍儿童比尔=儿童*7.30;
双重特许权比尔=特许权*8.40;
双倍总账单=成人账单+儿童账单+特许账单;
双倍总账单2=儿童账单+特许账单;
System.out.println(totalBill2);//引用out
如果(免费成人>=成人){
System.out.printf(“总账单为:£%.2f\n”,总账单);
}否则如果(免费成人<成人){
System.out.printf(“总账单为:£%.2f\n”,总账单2);
}否则{
System.out.println(“请输入正确的值”);
}
}
}

谢谢

我想你的逻辑有点混乱:

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");
}
我认为这意味着要计算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来定义Free成人,而不是Int,这不起作用,谢谢你为什么要创建totalBill2?这不包含任何成人票,这就是为什么当免费成人票多于非免费成人票时,它会对额外的成人票进行子跟踪。并且您还应该检查free成人<在此之前的成人声明:double adultBill=(成人*10.50)-(free成人*10.50);因为这种方式也会产生一张负面账单,就像出纳支付给访客一样。@Adem——使用
double
来计算
freemantum
没有帮助。
adultBill
不应该关心“部分成年人”。只需在@yogidlip上尝试你的代码,它仍然会减去额外的成年人:(是的,它成功了,非常感谢各位。我应该早点来这里
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");
}
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);