如何实现可重复输入全名的交互式Java程序并修复运算符错误?
问题分析与代码修正
错误原因
第18行的报错是因为answer是String类型,而'y'、'Y'是char类型,Java不允许用==直接比较不同类型的操作数。而且String类型的相等判断应该用equals()方法,用equalsIgnoreCase()忽略大小写会更简便。
代码中的其他问题
除了上述错误,代码还有几处逻辑问题:
scan.Next()是拼写错误,应该是小写的scan.next()- 没有将用户输入的全名拆分赋值给
firstName、middleName、lastName,导致输出的名字始终为空 ask = scan.hasNext(in);用法错误,hasNext()用于判断是否还有输入,这里不需要这个逻辑
修正后的代码
import java.util.Scanner; public class FullName { public static void main(String[] args) { String firstName, middleName, lastName; String answer; Scanner scan = new Scanner(System.in); do { System.out.println("请输入你的全名(名 中间名 姓):"); // 拆分输入的全名到对应变量 firstName = scan.next(); middleName = scan.next(); lastName = scan.next(); // 处理换行,避免后续nextLine读取空内容 scan.nextLine(); String str = String.format("我的名字是 %s %s %s", firstName, middleName, lastName); System.out.println(str); System.out.println("是否要重试?(Y/N)"); answer = scan.nextLine().trim(); // 用equalsIgnoreCase忽略大小写判断,简化循环逻辑 } while (answer.equalsIgnoreCase("y")); scan.close(); } }
修正说明
- 用
equalsIgnoreCase("y")替代错误的类型比较,直接判断用户输入是否为Y/y,无需额外布尔变量控制循环 - 修复
scan.Next()的拼写错误,根据场景使用next()和nextLine() - 实现用户输入全名的拆分与赋值,正确输出用户输入的名字
- 添加
scan.close()关闭扫描器,避免资源泄漏 - 将提示文本适配为中文
内容的提问来源于stack exchange,提问作者Joshua Partido
相关产品推荐
相关产品推荐

