我正在尝试接受用户输入并进行修改,以便打印没有任何元音的字符串。我已经能够用下面的代码成功地完成了。打印UI不使用元音使用循环不使用replaceAll();在Java中
Scanner in = new Scanner(System.in);
System.out.println("Enter a word: ");
String word = in.next();
String newString = word.replaceAll("[aeiouAEIOU]","1");
System.out.printf("%s", newString);
但是,我试图通过使用没有上述方法replaceAll()的循环来获得相同的效果。我已经尝试了另外一次,但在逻辑中混淆并重新启动。我最近的尝试是在下面,我不明白为什么它不能正常运行。我会输入一个字符串,并且没有任何错误信息,它将不会打印回任何东西。我得到它的工作的唯一的一次是当我给它的单个字符的字符串中找到使用类似
if(letter.contains("a"))
如果发现情况属实,将打印回的串,但是,这并不适用于任何字符组合,只有单个字符。我的完整代码如下。
import java.util.Scanner;
public class practice
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.println("Enter a word: ");
String word = in.next();
int i = 0;
while (i < word.length()){
String letter = word.substring(i, (i+1));
if(letter.contains("[bcdfghjklmnpqrstvwxyz]")){
System.out.printf("%s",letter);
}
i++;
}
}
}
我只是想找到一种方法来完成这个程序只使用条件,循环,UI,只有方法长度(),包含()或的indexOf()的charAt(),和子( X,Y)。预先感谢任何帮助,我希望我已经提供了足够的信息。
下面是一些示例输出:
Enter a word:
Jordan
我输入的词后,程序停止。
字符串' “B”'(例如)不能包含字符串' “bcdfghjklmnpqrstvwxyz”' 。太短了。 – ajb
对不起,我编辑并在我正在寻找的字母周围添加[]。不幸的是仍然是同样的错误,没有得到任何输出。我在问题中提供了一个示例输出,希望能稍微澄清一点,谢谢。 –
'contains'不使用正则表达式,并且使用'[]'创建正则表达式。不过,你可以使用'contains()'来解决问题,并且我认为你是在正确的轨道上,但是犯了一个小错误。您可以对原来的代码进行简单的更改(没有'[]')。想一想。 – ajb