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

Java编写统计输入单词辅音数量的方法始终返回0如何解决

代码问题分析

1. 方法返回值未接收,Java基本类型为值传递

Java的基本数据类型(比如int)是值传递,你把main方法里的number传给prestej方法时,实际传的是该变量的副本,方法内对number的修改完全不会影响main方法里的原变量。且你调用prestej方法时已经返回了计算后的辅音数量,但没有用变量接收返回值,导致main方法里打印的始终是初始的0值。
正确写法:

// 接收方法返回的计算结果
number = new Work().prestej(beseda, number);

你提到的不初始化number就报错是正常的Java语法规则:局部变量必须显式初始化后才能使用,没有默认值,不属于代码逻辑错误。

2. 元音判断逻辑错误

当前if条件用的是||(逻辑或),这个条件永远为真:任意字符都不可能同时等于a/u/e/i/o五个字母,所以不等于a 或 不等于u的判定永远成立。要判断字符为辅音,应该用&&(逻辑与),要求字符同时不等于所有元音字母:

if (beseda.charAt(i) != 'a' && beseda.charAt(i) != 'u' && beseda.charAt(i) != 'e' && beseda.charAt(i) != 'i' && beseda.charAt(i) != 'o' )

3. 循环中断逻辑错误

你在else分支写了break,意思是只要遍历到第一个元音字符就直接终止整个循环,后面所有字符都不会再统计,完全不符合统计全部辅音的需求,直接删除该else分支即可。

4. 其他边缘问题

  • 目前只判断了小写元音,大写的A/U/E/I/O、非字母字符(数字、空格、符号)都会被误算为辅音,可根据需求补充大小写转换、字母合法性判断。
  • 变量名拼写不规范:lenght应为length。
  • main方法里的int number=0;;多写了一个分号,属于冗余代码。
修正后核心代码示例
// main方法调用部分修改
number = new Work().prestej(beseda);

// Work类方法修改
class Work {
    int prestej(String beseda) {
        int count = 0;
        int length = beseda.length();
        String lowerStr = beseda.toLowerCase(); // 统一转小写兼容大小写输入
        for (int i = 0; i < length; i++) {
            char c = lowerStr.charAt(i);
            // 先判断是字母,再判断不是元音
            if (Character.isLetter(c) && c != 'a' && c != 'u' && c != 'e' && c != 'i' && c != 'o') {
                count++;
            }
        }
        return count;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 20:12:02