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

如何实现可重复输入全名的交互式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();
    }
}

修正说明

  1. 用equalsIgnoreCase("y")替代错误的类型比较,直接判断用户输入是否为Y/y,无需额外布尔变量控制循环
  2. 修复scan.Next()的拼写错误,根据场景使用next()和nextLine()
  3. 实现用户输入全名的拆分与赋值,正确输出用户输入的名字
  4. 添加scan.close()关闭扫描器,避免资源泄漏
  5. 将提示文本适配为中文

内容的提问来源于stack exchange,提问作者Joshua Partido

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 21:45:37