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

Java元音计数器应用卡在for循环?不像是无限循环的问题

问题根因

  • 程序无响应是死循环导致,和本地/在线运行环境无关。Java中String是不可变类,z.replace()方法不会修改原有z字符串,只会返回新的替换后字符串,你没有将返回值赋值给z,导致z内容永远不变,indexOf始终能找到对应元音字符,循环永远不会退出。
  • 当前嵌套循环逻辑冗余,通过删除字符统计元音的实现方式效率低,且容易出错。

修正后代码(符合项目for循环要求)

import java.util.Scanner;
class Main
{
  public static void main(String[] args)
  {
    Scanner s = new Scanner(System.in);
    System.out.print("Enter a string to count the vowels>> ");
    String x = s.nextLine();
    int numVowels = countVowels(x, "aeiou");
    System.out.println(numVowels);
  }

  static int countVowels(String x, String vowels)
  {
    int count = 0;
    String lowerInput = x.toLowerCase();
    String lowerVowels = vowels.toLowerCase();
    // 外层遍历输入字符串所有字符
    for (int i = 0; i < lowerInput.length(); i++) {
        char currentChar = lowerInput.charAt(i);
        // 内层遍历元音表匹配判断
        for (int j = 0; j < lowerVowels.length(); j++) {
            if (currentChar == lowerVowels.charAt(j)) {
                count++;
                break; // 匹配到元音直接跳出内层循环,减少不必要运算
            }
        }
    }
    return count;
  }
}

实现说明

  • 完全满足项目要求,使用两层for循环实现统计
  • 无需修改原字符串,逻辑简单清晰,不会出现死循环问题
  • 自动兼容大小写输入,和原有实现的业务逻辑一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 22:24:05