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
相关产品推荐
相关产品推荐

