3 回答

TA貢獻(xiàn)1783條經(jīng)驗(yàn) 獲得超4個(gè)贊
如上所述,代碼有兩個(gè)問(wèn)題:
一旦第一次出現(xiàn)任何條件(這就是它正在檢查的所有條件 - 第一次出現(xiàn)) - 您將獲得結(jié)果。
如果您的輸入比您的任何一個(gè)字母數(shù)組都長(zhǎng)(并且確實(shí)如此),您將獲得一個(gè)
ArrayIndexOutOfBoundsException
.
在這種情況下,最好的辦法是直接檢查元音等價(jià)性,而不是依靠數(shù)組來(lái)存儲(chǔ)它。
private static boolean hasHighVowel(String input) {
return input.contains("e") || input.contains("i");
}
private static boolean hasLowVowel(String input) {
return input.contains("a") || input.contains("o") || input.contains("u");
}
然后你可以在你的方法中檢查它。還要注意不要立即從方法返回。
public static String vowelHarmony(String input) {
String result = "you screwed something up";
if (hasHighVowel(input)) {
result = "high";
}
if (hasLowVowel(input)) {
result = "deep";
}
if (hasHighVowel(input) && hasLowVowel(input)) {
result = "mixed";
}
return result;
}
錯(cuò)誤處理情況——例如當(dāng)用戶在null此方法中輸入或空字符串時(shí)——留給讀者作為練習(xí)。

TA貢獻(xiàn)1900條經(jīng)驗(yàn) 獲得超5個(gè)贊
您可以輕松做到:
enum Harmony {
Deep, High, Mixed, Nothing
}
public static Harmony vowelHarmony(String input) {
boolean canBeHigh = false, canBeDeep = false;
if (input.contains("a") || input.contains("o") || input.contains("u"))
canBeDeep = true;
if (input.contains("e") || input.contains("i"))
canBeHigh = true;
if (canBeDeep && canBeHigh)
return Harmony.Mixed;
if (canBeDeep)
return Harmony.Deep;
if (canBeHigh)
return Harmony.High;
return Harmony.Nothing;
}

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個(gè)贊
我做了一些 Jugaad 只是為了讓生活更輕松。我知道這不是一個(gè)好的編碼習(xí)慣
enum Harmony
{
High,Low,Mixed,Screwed
}
public static Harmony vowelHarmony(String input)
{
String[] high = {"e", "i"};
String[] deep = {"a", "o", "u"};
input=input.replaceAll("[ei]", "1");
input=input.replaceAll("[aou]", "0");
input=input.replaceAll("[^01]", "");
if(input.contains("1") && !input.contains("0"))
return Harmony.High;
else if(input.contains("1") && !input.contains("0"))
return Harmony.Low;
else if(input.contains("1") && !input.contains("0"))
return Harmony.Mixed;
else
return Harmony.Screwed;
}
添加回答
舉報(bào)