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

如何用Java Stack类实现字符串拆分提取元音、辅音及非字母字符

问题排查
  • 变量命名违规:Stack实例的变量名用了Java内置类名String,会直接引发编译冲突。
  • 栈操作逻辑错误:仅向栈中push了1次输入字符串,连续调用2次pop()会触发EmptyStackException空栈异常。
  • 方法调用错误:replace()方法不支持正则匹配,正则替换需要调用replaceAll()方法。
  • 提取逻辑反转:代码中replace("[aeiou]","")是删除元音字符,和提取元音的需求完全相反。
  • 输出逻辑错误:最终内容未过滤字母字符,直接输出原输入字符串,不符合需求。
修复后可运行代码
import java.util.Scanner;
import java.util.Stack;
public class PushPop {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Enter a String : ");
        String str = sc.nextLine();
        
        // 定义三个栈分别存储元音、辅音、非字母字符
        Stack<Character> vowelStack = new Stack<>();
        Stack<Character> consonantStack = new Stack<>();
        Stack<Character> otherStack = new Stack<>();
        
        // 遍历每个字符分类入栈
        for (char c : str.toCharArray()) {
            if (Character.isLetter(c)) {
                char lowerC = Character.toLowerCase(c);
                if (lowerC == 'a' || lowerC == 'e' || lowerC == 'i' || lowerC == 'o' || lowerC == 'u') {
                    vowelStack.push(c);
                } else {
                    consonantStack.push(c);
                }
            } else {
                otherStack.push(c);
            }
        }
        
        // 按输入顺序拼接栈内字符
        StringBuilder vowels = new StringBuilder();
        for (Character c : vowelStack) {
            vowels.append(c);
        }
        
        StringBuilder consonants = new StringBuilder();
        for (Character c : consonantStack) {
            consonants.append(c);
        }
        
        StringBuilder finalContent = new StringBuilder();
        for (Character c : otherStack) {
            finalContent.append(c);
        }
        
        // 按要求输出
        System.out.println("Vowels : " + vowels);
        System.out.println("Consonant : " + consonants);
        System.out.println("Final contents : " + finalContent);
    }
}
效果验证

输入样例hello1234!@#$时,输出和需求完全一致:

Enter a String : hello1234!@#$
Vowels : eo
Consonant : hll
Final contents : 1234!@#$

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 13:36:04