Java startsWith(String)方法和数组

Java startsWith(String)方法和数组,java,arrays,startswith,Java,Arrays,Startswith,我必须拿一个字符串,把它转换成拉丁语。piglatin有三条规则,其中之一是: 如果英语单词以元音开头,则返回英语单词+“yay”,表示拉丁语版本 因此,我诚实地尝试这样做,希望得到一个错误,因为startsWith()方法将字符串作为参数,而不是数组 public String pigLatinize(String p){ if(pigLatRules(p) == 0){ return p + "yay"; } } public int pigLatRule

我必须拿一个字符串,把它转换成拉丁语。piglatin有三条规则,其中之一是:

如果英语单词以元音开头,则返回英语单词+“yay”,表示拉丁语版本

因此,我诚实地尝试这样做,希望得到一个错误,因为startsWith()方法将字符串作为参数,而不是数组

 public String pigLatinize(String p){
    if(pigLatRules(p) == 0){
        return p + "yay";
    }
}

public int pigLatRules(String r){
    String vowel[] = {"a","e","i","o","u","A","E","I","O","U"};
    if(r.startsWith(vowel)){
        return 0;
    }        
}
但是如果我不能使用数组,我就必须这样做

if(r.startsWith("a")||r.startsWith("A")....);
     return 0;
测试每一个元音,不包括y,它会占用很大的空间,我个人认为它看起来会很混乱

当我写这篇文章的时候,我想通过迭代来测试它

 String vowel[] = new String[10];
 for(i = 0; i<vowel[]; i++){
     if(r.startsWith(vowel[i]){
         return 0;
     }
String元音[]=新字符串[10];

对于(i=0;i将所有这些字符放入哈希集中,然后执行查找以查看字符是否有效,并相应地返回0

请看一些关于HashSet插入/查找的示例。应该很简单


希望这能有所帮助。

将所有元音放在一个字符串中,抓取您要测试的单词的第一个字符,看看您的字符是否在所有元音的字符串中。

您的代码:

String vowel[] = new String[10];
for(i = 0; i<vowel[]; i++){
    if(r.startsWith(vowel[i]){
        return 0;
     }
}
现在,您有了这样一个选项,您希望在阵列上循环(正如您计算的那样),并执行检查:

public int pigLatRules(String r){
    final String[] vowels={"a","A","e","E","i","I","o","O","u","U"};
    for(int i = 0; i< vowels.length; i++){
        if(r.startsWith(vowels[i])){
             return 0;
         }
    }
    return 1;
}
public int pigLatRules(字符串r){
最后的字符串[]元音={“a”、“a”、“e”、“e”、“i”、“i”、“o”、“o”、“u”、“u”};
for(int i=0;i<元音.length;i++){
if(r.startsWith(元音[i])){
返回0;
}
}
返回1;
}
不过,您可以对此进行一些改进。有些是最佳实践,有些只是选择,有些是性能

作为最佳实践,您当前正在从此函数返回一个int。您最好将此函数的结果更改为布尔值(如果没有遇到它们,我建议您查找它们)

至于一个选项,你说你不喜欢数组中包含大写和小写元音。这里有一点信息。字符串上有很多方法,其中之一是toLowerCase()你可以猜出它是整个字符串的小写字母。如果你对传递给函数的工作这样做,你就可以把你需要做的检查量减半


还有很多,但这只是一点点。

你的第二种方法很好。有什么问题吗?只需替换“Itis worked罚款,但只有当我输入一个以“a”开头的字符串,而不是大写字母a或任何其他元音时,它似乎只检查数组中的第一个字符串:(.比如当我输入“是你”时,它会返回我所期望的“是你的”但当我尝试输入“是你的”时,它会返回“是你的”时,它会返回“是你的”。它对我来说很好。它会返回“是”的“是”。请在问题中发布你当前的代码。我修复了它。public int pigLatRules(String r){String[]元音={”a”、“a”、“e”、“e”、“i”、“i”、“o”、“o”、“u”、“u”};for(int i=0;我想4个空格的东西对注释不起作用:\n我在之前的一篇文章中评论了这个确切的信息,它似乎只是检查数组的第一个值,或者“a”,因为当我尝试“是你”时,它返回“是你吗?”,这是我所期望和需要得到的,但当我尝试大写字母a或任何其他元音时,例如“is your”返回“Isay youray”,当它应该返回“Isyay youray”时,它似乎只是在测试元音[0]字符串,然后跳过其余部分,或者idk,这真的很让人困惑,我很惊讶我在我所做的第一个迭代方法中得到了如此接近正确的答案。我实际上测试了我编写的代码,它工作得很好,所以我很惊讶你有任何问题。
public int pigLatRules(String r){
    final String[] vowels={"a","A","e","E","i","I","o","O","u","U"};
    for(int i = 0; i< vowels.length; i++){
        if(r.startsWith(vowels[i])){
             return 0;
         }
    }
    return 1;
}