尝试java学校PigLatin项目,我循环遍历Strings的Arraylist并检查char 0中的String是否有元音。有没有比写出||更简单的方法对于每个元音(小写和大写)。这是我开始列出很长时间的一个例子......
for (int i = 0; i<arrayList.size(); i++){
if (arrayList.get(i).charAt(0) == 'a' || arrayList.get(i).charAt(0) == 'e'){
System.out.println(arrayList.get(i) + "way");
}
}
我无法在网上找到这个直截了当的答案。我已经看过stringbuilder和其他潜在的复杂选项但不确定我是否需要使用它们。
答案 0 :(得分:0)
您可以创建一个静态方法isVowel(char c)
以在条件语句中使用:
for (int i = 0; i<arrayList.size(); i++) {
if (isVowel(arrayList.get(i).charAt(0))) {
System.out.println(arrayList.get(i) + "way");
}
}
public static boolean isVowel(char c) {
return "AEIOUaeiou".indexOf(c) != -1;
}
答案 1 :(得分:0)
如果它有助于您感觉更好或使用ASCII代码,您可以使用开关案例。
定义一个函数isVowel或类似的东西,为自己工作相同的逻辑,并在需要时重用它。
但恕我直言,在最基本的层面上,你必须为你要检查的所有元音单独工作。
答案 2 :(得分:0)
您可以使用pattern matching来略微减少混乱。如前所述,您还可以添加isVowel()
方法来分隔元音检查逻辑。
import java.util.Arrays;
import java.util.List;
public class PigLatin {
public static void main(String[] args) {
List<String> words = Arrays.asList(
"apricot",
"banana",
"lemon",
"orange",
"Input",
"Test",
"User"
);
for (int i = 0; i < words.size(); i++) {
String word = words.get(i);
if (startsWithVowel(word)) {
System.out.println(word + "way");
}
}
}
private static boolean startsWithVowel(String word) {
return word.matches("^[AEIOUaeiou].*$");
}
}
您可以使用for-each loop替换索引for循环:
for (String word : words) {
if (startsWithVowel(word)) {
System.out.println(word + "way");
}
}
如果你有兴趣,这里有一个functional way,更简洁:
words.stream()
.filter(word -> startsWithVowel(word))
.forEach(word -> System.out.println(word + "way"));
打印:
apricotway
orangeway
Inputway
Userway
答案 3 :(得分:0)
这是一个小代码片段,为您提供更短的方式:)
public static void main(String[] args) {
String[] strings={"Aello","Bello","iello","Oello","Zello"};
List<String> al=Arrays.asList(strings); //creating a list with entities....Replace it with your ArrayList...
String vowelsString="aeiouAEIOU";
for(String s:al){ //for each String in List
if(vowelsString.contains(s.charAt(0)+"")) //charAt(0) represents the beginning of string
System.out.println(s+" way");
}