我第一次使用迭代器编写了一个程序。我有一个字符串数组列表,我使用hasNext和next方法打印它们。我现在正试图使用前面的方法向后退,并且在这样做时我想检查每个元素,如果它以元音开头,我要从列表中删除它。这是我遇到问题的一段代码。
while (iterator.hasPrevious())
{
String s = iterator.previous();
if (s.startsWith("a"))
{
iterator.remove();
}
System.out.print(" "+ s);
}
非常感谢任何帮助!
答案 0 :(得分:6)
String vowels = "aeiou";
String testString = ... // Iterator String
if (vowels.indexOf(Character.toLowerCase(testString.charAt(0))) != -1) {
... // Start char is vowel
}
答案 1 :(得分:2)
要检查String
是否以元音开头,您可以使用正则表达式。
例如:
String[] input = {"abc", "def", "ghi"};
for (String s: input) {
System.out.printf("\"%s\" starts with a vowel? %b%n", s, s.matches("(?i)^[aeiouy].*$"));
}
<强>输出强>
"abc" starts with a vowel? true
"def" starts with a vowel? false
"ghi" starts with a vowel? false
在您的情况下......
方法startsWith
只需要一个文字,所以它不是你想要的。
相反,您可以在班级中使用常量Pattern
,例如:
static final Pattern STARTS_WITH_VOWEL = Pattern.compile("^[aeiouy]", Pattern.CASE_INSENSITIVE);
然后在你的循环中,你可以使用:
if (STARTS_WITH_VOWEL.matcher(s).find()) {
...
}
答案 2 :(得分:1)
这样做的可读方式是拥有所有元音的列表
Collection<Character> vowels = new HasSet<~>();
vowels.add('a');
vowels.add('e');
vowels.add('i');
vowels.add('o');
vowels.add('u');
然后你可以做的是
if (vowels.conatins(Character.toLowerCase(s)))
{
iterator.remove();
}
答案 3 :(得分:0)
只需更改if以包含更多条件
if(s.startsWith(&#34; a&#34;)|| if(s.startsWith(&#34; A&#34;))...)