【问题标题】:Java- Remove vowels from user input using nested for loopJava-使用嵌套的for循环从用户输入中删除元音
【发布时间】:2020-08-19 09:13:57
【问题描述】:

所以我已经看过这个简单的问题并回答了几次,我只是想尝试一种不同的方法来解决它。 我的解决方案确实有效 - 它用空字符替换每个元音。 但是,我一直试图在我的代码中找出一种方法,可以简单地删除字符,而不是用 empty char ' ' 替换。

例如... 在我的代码中,如果用户输入:happy,结果是 h ppy

虽然这确实回答了这个问题,但我还希望看到输出:hppy

希望我能得到一些帮助,谢谢!

import java.util.Scanner;

public class Main {
    public static void main(String args[]){

        char [] vowels = {'a','e','i','o','u',
                            'A','E','I','O','U'};//char array


        Scanner in = new Scanner(System.in);
        System.out.println("Enter phrase: ");
        String phrase = in.nextLine();


        for (int i = 0; i < phrase.length(); i++) {
            for (int j = 0; j < vowels.length; j++) {
                char ch = vowels[j];
                char ch2 = phrase.charAt(i);
                if (ch == ch2) {
                    phrase = phrase.replace(phrase.charAt(i), ' ');


                }

            }

        }
         System.out.println(phrase);

【问题讨论】:

  • phrase = phrase.replaceAll("[AEIOUaeiou]", "") 是最简单的。
  • 请注意phrase.replace 会将一个字符的所有实例替换为另一个字符。因此,如果有 10 个 'e',第一次调用 replace 将替换所有 10 个,以后您将永远不会看到另一个 'e'。
  • 一个惯用的手动解决方案(即不使用replaceAll)将涉及StringBuilder,将所有非元音字符复制到其中,然后在其上调用toString()

标签: java arrays replace char comparator


【解决方案1】:

这应该可以工作:phrase.replaceAll("[aeiouAEIOU]", "")

【讨论】:

  • 是的,确实如此。但是,这会破坏我的嵌套 for 循环的目的。我试图基本上遍历短语中的每个字母,然后将其与声明的名为“元音”的 char 数组的每次迭代进行比较......如果有匹配项,则替换短语中的那个字母
  • 我明白了。看起来真的很复杂。如果您这样做是为了了解有关嵌套循环或字符串的更多信息,也许另一个问题会更适合?
  • 可能很复杂,我只是想从不同的角度来解决它,看看它是否有效。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-03
  • 2018-07-10
相关资源
最近更新 更多