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

Java元音计数排序程序如何为排序后的数组输出绑定对应字符标签

问题核心原因

你现在的代码只存储了5个元音的计数值,没有把计数值和对应的a/e/i/o/u字母绑定,排序时也只交换了计数值,排序完成后自然无法对应到每个计数属于哪个元音。另外你现有排序逻辑还有一处错误:比较的是j和k下标位置的计数,交换时却写死了j和j+1位置,会导致排序结果异常。

新手友好修改方案

新增一个字符数组存储元音字母,排序计数的时候同步交换对应位置的元音字母,保证排序后计数和字母的对应关系不变即可,修改后的完整代码如下:

// 新增存储元音字母的数组,和计数数组下标一一对应
char[] vowels = {'a', 'e', 'i', 'o', 'u'};
int[] vowelcounter = {a, e, i, o, u}; // 这里保留你原来的计数赋值逻辑
boolean hasswapped = true;
while(hasswapped)
{
    hasswapped = false;
    for(int j = 0; j<vowelcounter.length; j++)  
    {
        for(int k = j+1; k<vowelcounter.length; k++)
        {
            if(vowelcounter[j] > vowelcounter[k])
            {
                // 交换计数的同时,同步交换对应位置的元音字母
                int tempCount = vowelcounter[j];
                vowelcounter[j] = vowelcounter[k];
                vowelcounter[k] = tempCount;

                char tempVowel = vowels[j];
                vowels[j] = vowels[k];
                vowels[k] = tempVowel;

                hasswapped = true;
            }
        }
    }
}

// 输出时同时打印元音和对应计数
for(int j=0; j<vowelcounter.length; j++)
{   
    System.out.println(vowels[j] + " : " + vowelcounter[j]);
}

改动说明

  1. 新增vowels字符数组,初始顺序和你计数数组的初始顺序完全对应,下标0对应a和a的计数,下标1对应e和e的计数,以此类推
  2. 修正了排序时的交换逻辑,改为交换j和k下标的元素,和判断逻辑保持一致
  3. 交换计数的同时同步交换vowels数组对应位置的字母,保证两个数组相同下标始终对应同一个元音的信息
  4. 输出时同时取两个数组同下标的值,就能同时显示元音和对应计数了

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:18:04