Java方法开发问题:变量未初始化报错及问候语输出异常
Java变量未初始化与null输出问题修复
问题根源
- 调用时机错误:你在给
sal赋值的逻辑之前就调用了Greet方法,此时sal还没被赋值(默认是null),所以会出现nullDavid的异常输出。 - 方法参数顺序颠倒:
Greet方法定义的参数顺序是(String name, String sal),但调用时传的是sal和name,参数对应错误,即使赋值正确也会输出混乱的格式。 - 格式缺失:期望输出里称呼和名字之间有空格,原代码没加,会导致
Mr.David这类格式错误。
修正后的代码
package designingmethod; import java.util.Scanner; public class DesigningMethod { public static void main(String[] args) { String name, m1, m2, m3, f1, f2, f3, sal = "", sex, status; m1 = "Mr."; m2 = "Mr."; m3 = "Sir"; f1 = "Ms."; f2 = "Mrs."; f3 = "Ma'am"; Scanner sc = new Scanner(System.in); System.out.println("Name:"); name = sc.next(); System.out.println("Sex(M/F):"); sex = sc.next(); System.out.println("Status(S/M/W):"); status = sc.next(); if("M".equals(sex)){ switch (status) { case "S": sal = m1; break; case "M": sal = m2; break; case "W": sal = m3; break; default: sal = "Sir"; // 处理无效状态的默认值 break; } } else if("F".equals(sex)){ switch (status) { case "S": sal = f1; break; case "M": sal = f2; break; case "W": sal = f3; break; default: sal = "Ma'am"; // 处理无效状态的默认值 break; } } else { sal = "Friend"; // 处理无效性别的默认值 } Greet(sal, name); } static void Greet(String sal, String name){ System.out.println("Welcome, " + sal + " " + name + "."); } }
关键修改点
- 给
sal初始化为空字符串,解决“变量可能未初始化”的编译报错,同时在无效输入时设置默认称呼,避免输出异常。 - 将
Greet方法的调用移到所有赋值逻辑之后,确保调用时sal已经有正确的值。 - 调整
Greet方法的参数顺序为(String sal, String name),调用时传对应参数,保证输出格式正确。 - 在输出语句中添加空格,让称呼和名字之间符合预期格式。
- 给
if逻辑加上else if和else分支,处理性别输入错误的情况,避免sal保持初始空值。
内容的提问来源于stack exchange,提问作者Agrimtouma
相关产品推荐
相关产品推荐

