You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java票务计算代码变量求和结果始终为0.00问题求助

问题原因

  • 变量作用域错误:你在if/else代码块内部定义的票价变量属于局部变量,仅在对应大括号内生效,出了代码块就会失效。你在所有判断逻辑结束后单独给各票价变量赋值为0,这才是最终参与总金额计算的数值,所以总和永远为0。
  • 判断逻辑错误:计算第2、3、4位游客票价时,所有条件判断全部错误使用了第一位游客的年龄age1作为判断依据,完全没有用到你输入的age2、age3、age4的值。
  • 冗余代码问题:不需要创建4个Scanner对象,全局共用1个Scanner读取输入即可;年龄为整数,用int类型存储更合理。

修正后可运行代码

import java.util.Scanner;

public class TitanicAgeSubmissions {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入第一位游客的年龄:");
        int age1 = sc.nextInt();
        System.out.println("请输入第二位游客的年龄:");
        int age2 = sc.nextInt();
        System.out.println("请输入第三位游客的年龄:");
        int age3 = sc.nextInt();
        System.out.println("请输入第四位游客的年龄:");
        int age4 = sc.nextInt();

        // 计算第一位游客票价
        double ticketprice1 = 0.0;
        if (age1 > 16) {
            ticketprice1 = 19;
        } else if (age1 >=5 && age1 <=16) {
            ticketprice1 = 8.5;
        }

        // 计算第二位游客票价
        double ticketprice2 = 0.0;
        if (age2 > 16) {
            ticketprice2 = 19;
        } else if (age2 >=5 && age2 <=16) {
            ticketprice2 = 8.5;
        }

        // 计算第三位游客票价
        double ticketprice3 = 0.0;
        if (age3 > 16) {
            ticketprice3 = 19;
        } else if (age3 >=5 && age3 <=16) {
            ticketprice3 = 8.5;
        }

        // 计算第四位游客票价
        double ticketprice4 = 0.0;
        if (age4 > 16) {
            ticketprice4 = 19;
        } else if (age4 >=5 && age4 <=16) {
            ticketprice4 = 8.5;
        }

        double grandtotal = ticketprice1 + ticketprice2 + ticketprice3 + ticketprice4;
        System.out.println("门票总金额为:" + grandtotal + " 英镑");
        sc.close();
    }
}

内容的提问来源于stack exchange,提问作者Assassin Wolf172

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 16:57:03