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

Java大小写切换程序开发问题:输入CAPS切换字符大小写

问题:Java大小写切换程序无输出问题解决

需求说明

需要开发一个Java程序,功能如下:

  • 先接收一个整数,代表后续要输入的字符或指令总数(包含CAPS指令)
  • 初始默认字符为小写
  • 每次输入CAPS指令后,后续输入的字符切换大小写
  • 最终输出处理后的字符串

示例:
输入:8、s、f、k、CAPS、h、j、CAPS、p
输出:sfkHJp

用户尝试代码

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        int CAPScounter = 0;
        String result = "";
        String temp = "";
        String singles = "";
        boolean CAPSval = false;

        if (CAPSval) {
            singles = "CAPS";
        }

        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        // System.out.print(n);

        while (true) {
            if (result.length() == n - CAPScounter) {
                break;
            }
            //temp += input.next();
            singles = input.next();
            if (CAPSval) {
                CAPScounter += 1;
                result += temp;
                temp = "";
            }
        }
        System.out.print(result);
    }
}

问题分析

你的代码存在几个核心问题导致无输出:

  1. 循环终止逻辑错误:result.length() == n - CAPScounter 条件永远无法触发,因为result和CAPScounter的更新逻辑完全混乱,无法达到终止条件
  2. CAPS指令判断缺失:没有检查输入内容是否为"CAPS",无法触发大小写切换逻辑
  3. 字符处理逻辑无效:没有根据大小写状态对输入字符进行转换,也没有正确将字符追加到结果中
  4. 冗余无效代码:初始的if (CAPSval)块完全无效,因为CAPSval初始为false,这段代码不会执行

修正后的代码

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        // 获取输入总数
        int total = input.nextInt();
        // 大小写状态标记,初始为小写模式
        boolean isUpperCase = false;
        StringBuilder result = new StringBuilder();

        // 循环读取指定次数的输入
        for (int i = 0; i < total; i++) {
            String inputStr = input.next();
            if ("CAPS".equals(inputStr)) {
                // 切换大小写状态
                isUpperCase = !isUpperCase;
            } else {
                // 根据当前状态转换字符并追加到结果
                if (isUpperCase) {
                    result.append(inputStr.toUpperCase());
                } else {
                    result.append(inputStr.toLowerCase());
                }
            }
        }

        // 输出最终结果
        System.out.println(result.toString());
        input.close();
    }
}

修正说明

  • 使用StringBuilder替代字符串拼接,提升效率
  • 用for循环直接控制读取次数,逻辑更清晰,避免无限循环问题
  • 增加CAPS指令判断,正确切换大小写状态
  • 对每个输入字符,根据当前状态完成大小写转换后追加到结果
  • 最后关闭Scanner资源,避免资源泄漏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 04:18:21