Java抵押贷款计算代码报BLANK token expected语法错误 求解
抵押贷款Java程序语法错误修复
运行时触发Syntax error on token BLANK while expected报错,本质是代码结构不符合Java语法规范,具体问题和修改方案如下:
核心问题定位
- 分支逻辑未加代码块:Java中
if/else分支如果要执行多行代码,必须用{}包裹对应逻辑段。原代码分支未加大括号,语法解析器会把分支后的return mortgage识别为独立代码,碰到后续的else关键字时无法匹配上下文,直接报空token语法错。 - else语法使用错误:原代码写为
else (salaryTwo > salaryOne),Java语法中else是无判断条件的默认分支,要在else链路中追加判断必须写else if,直接在else后接条件括号属于完全非法的语法结构。 - 边界场景缺失:原代码仅判断了薪资1大于薪资2、薪资2大于薪资1的场景,漏了两者相等的情况,会导致方法走到分支尽头时没有可返回的数值,触发编译报错。
- 提示语小笔误:用户输入提示里的
person 2'a salary存在所有格拼写错误,修正为person 2's salary。
修改后可直接运行的完整代码
import java.util.Scanner; class calculateMortgageA { public static void main (String[]args) { // 初始化输入读取器 Scanner input = new Scanner(System.in); // 读取两位用户的薪资输入 System.out.println("Enter person 1's salary:"); double salaryOne = input.nextDouble(); System.out.println("Enter person 2's salary:"); double salaryTwo = input.nextDouble(); // 计算并输出可贷额度 System.out.print("The mortgage will be £" + calcmortgage(salaryOne, salaryTwo)); input.close(); } public static double calcmortgage (double salaryOne, double salaryTwo) { double mortgage; if (salaryOne > salaryTwo) { mortgage = 3 * salaryOne + salaryTwo; } else if (salaryTwo > salaryOne) { mortgage = 3 * salaryTwo + salaryOne; } else { // 兼容两人薪资相等的边界场景 mortgage = 4 * salaryOne; } return mortgage; } }
内容的提问来源于stack exchange,提问作者user15108028
相关产品推荐
相关产品推荐

