如何在java中的单词或句子中省略元音?

时间:2015-08-06 08:12:24

标签: java arrays

不知怎的,我无法运行我的程序。我希望你能帮助我。我是编程的初学者。

import java.util.*;
import java.lang.*;
import java.io.*;

public class Test {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        System.out.print("Enter a Word: ");
        String input = scan.next();

        String[] strArray = new String[input.length()];
        String ch = "", out = "";
        for (int i = 0; i < input.length(); i++) {
            strArray[i] = input.charAt(i) + "";
        }
        for (int i = 0; i < input.length(); i++) {
            ch = strArray[i];
            out = (ch.equalsIgnoreCase("A")) ? "" // "?" = if
                    : (ch.equalsIgnoreCase("E")) ? "" // ":" = else
                          : (ch.equalsIgnoreCase("I")) ? ""
                                 : (ch.equalsIgnoreCase("O")) ? ""
                                      : (ch.equalsIgnoreCase("u")) ? "" : ch;
            System.out.print(out);
        }
    }
}

非常感谢! :)

2 个答案:

答案 0 :(得分:4)

使用String的replaceAll()方法。 replaceAll("[AaEeIiOoUuYy]", "")会删除这些字母。

答案 1 :(得分:1)

由于您是初学者,我将提供一些额外的解释和建议,希望对您有所帮助。

1)至于你的主要问题,错误说明文件的名称是错误的。在Java中,包含代码的文件的名称应该与您声明的公共类的名称相同(必须,而不是像c ++)..所以你应该将你的文件命名为Test.java,你的类声明是:public class Test {...}

2)你的代码作为逻辑工作正常,但它不是最好的方法。正如jsheeran所回答的,使用称为正则表达式的东西比实现for循环要好得多。见http://www.vogella.com/tutorials/JavaRegularExpressions/article.html 关于正则表达式的介绍。如果你不理解它,那就行了。只需采用一般的想法并使用replaceAll函数。

3)与您提到的问题无关的一个注意事项是,无论何时处理Java中的I / O类(如Scanner),都应该关闭Streaming源,否则,这可能会导致内存泄漏。所以在代码的末尾添加:

scan.close();

4)最后,不要导入你不需要的课程。它不会造成任何问题,但为什么要导入它们。所以,删除:

import java.lang.*;
import java.io.*;

顺便说一下,java.lang会自动导入,所以你永远不需要导入它。

5)最后一个提示,如果你是一个初学者,你有时间学习,不要只使用互联网上的教程,而是阅读一本易于阅读的好书。我会推荐&#34;首先是java,第2版&#34;。此外,视频教程可能比阅读教程更好。