3 回答

TA貢獻1817條經驗 獲得超6個贊
查看您的obify功能,我不太清楚您在哪里檢查是否Character是元音。下面的代碼是什么:
if (input.contains( Character.toString( input.charAt( i ) ) ))
正在做的是檢查是否input在input. 這并不能完全解決您檢查字母是否為元音的問題。此外,您可以直接設置obifiledInput為input,而無需先經過并OB在需要時添加。要解決這些問題,您可以嘗試以下我的代碼:
private static String obify (String input) {
String obifiledInput = "";
for (int i = 0; i < input.length(); i++) {
char temp = input.charAt(i);
if (char == 'A' || char == 'E' || char == 'I' || char == 'O' || char == 'U') {
obifiledInput += "OB" + temp;
} else {
obifiledInput += "" + temp;
}
}
return obifiledInput;
}
我認為您應該會發現這是可行的。它檢查字符是否是元音,["A", "E", "I", "O", "U"]. 然后,它將"OB"和 字符添加到obifiledInput。否則,它只會添加Character. 最后,它返回String已經“obified”的。

TA貢獻1836條經驗 獲得超3個贊
只需將 input.charAt(i) 與它應該可以正常工作的所有元音匹配。您的代碼中還有一個小錯誤,您已經使用輸入初始化了 oblifiedInput,然后您將 OB 添加到該字符串。即使您的 for 循環是正確的,它仍然不會產生所需的輸出。
private static String obify (String input) {
String obifiledInput = "";
char c;
for (int i = 0; i < input.length(); i++) {
c=input.charAt(i);
if (c=='a' || c=='e' || c=='i' || c=='o' || c=='u') {
obifiledInput +="OB";
}
obifiledInput +=c;
}
System.out.println(obifiledInput);
return obifiledInput;
}

TA貢獻1876條經驗 獲得超7個贊
使用char數組,將所述數組傳遞給每個結構的 a ,然后replaceAll(String regex, String replacement)在您的 String 上使用該方法不是更容易嗎?
此外,還有將“OB”的“O”視為代碼的另一個元音的風險;所以'O'必須是第一個要檢查的元音。
它會給出以下內容:
String obifiledInput = input;
ArrayList<Character> vowels = { 'O', 'A', 'E', 'I', 'U', 'Y' };
for (char curr_char : vowels) {
obifiledInput.remplaceAll( "[" + curr_char + "]", "OB" + curr_char)
System.out.println(obifiledInput);
}
return obifiledInput;
添加回答
舉報