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

Java中如何计算输入字符串的有效单词占比?求技术指导

Java新手有效单词占比计算问题的修复建议

原代码核心问题

  • 未将合法输入存入数组,也未统计有效单词数量,无法计算占比
  • 输入校验循环中,输入不合法时未将valid设为false,循环逻辑失效
  • 百分比计算部分完全未实现,存在语法错误
  • 未统计首字母大写的单词数量

修复后的完整代码

import java.util.Scanner;

public class Subject3 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        boolean valid = true;
        int numOfStrings = 0;

        // 获取合法的字符串数量
        do {
            valid = true;
            System.out.print("请输入字符串数量: ");
            try {
                numOfStrings = Integer.parseInt(scan.nextLine());
                // 校验数量为正整数
                if (numOfStrings <= 0) {
                    System.out.println("请输入大于0的整数");
                    valid = false;
                }
            } catch (NumberFormatException e) {
                System.out.println("输入不是有效整数,请重新输入");
                valid = false;
            }
        } while (!valid);

        String[] stringPali = new String[numOfStrings];
        int validCount = 0;
        int capitalStartCount = 0;

        // 逐个输入字符串并校验
        for (int i = 0; i < numOfStrings; i++) {
            do {
                valid = true;
                System.out.print("请输入第" + (i + 1) + "个字符串: ");
                String input = scan.nextLine();

                // 校验是否为仅含字母数字的有效单词
                if (!input.matches("[A-Za-z0-9]+")) {
                    System.out.println("输入不是有效单词(仅允许字母和数字),请重新输入");
                    valid = false;
                } else {
                    // 存入数组
                    stringPali[i] = input;
                    validCount++;
                    // 统计首字母大写的单词
                    if (Character.isUpperCase(input.charAt(0))) {
                        capitalStartCount++;
                    }
                }
            } while (!valid);
        }

        // 计算百分比并输出结果
        System.out.println("\n结果统计");
        System.out.println("总输入字符串数量: " + numOfStrings);
        double validPercentage = (double) validCount / numOfStrings * 100;
        double capitalPercentage = (double) capitalStartCount / numOfStrings * 100;
        System.out.printf("有效单词占比: %.2f%%\n", validPercentage);
        System.out.printf("首字母大写的单词占比: %.2f%%\n", capitalPercentage);

        scan.close();
    }
}

关键修复说明

  • 有效数量统计:新增validCount变量,每存入一个合法单词就累加,用于后续占比计算
  • 循环逻辑修正:输入不合法时将valid设为false,确保循环持续提示输入
  • 首字母大写统计:用Character.isUpperCase()判断首字母,累加capitalStartCount
  • 百分比计算:通过强制类型转换为double避免整数除法丢失精度,用printf格式化输出百分比
  • 额外校验:增加字符串数量必须为正整数的校验,避免无效输入
  • 资源管理:最后关闭Scanner对象,养成良好的资源使用习惯

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 13:01:13