嘿伙计们,我必须制作一个将UbbiDubbi转换成英语的应用程序。我将首先解释UbbiDubbi,这不是UbbiDubbi工作的正常方式,而是我们只在元音或元音簇前添加ub(群集不超过2个元音在一起)。我几乎把它粘在两个部分上,它将添加第一个元音,但不会在字符串/单词中添加任何其他元音。两个一遍又一遍地运行程序。
public static String translateFromEnglish(String phrase) {
Scanner scan = new Scanner(System.in);
System.out.println("type in a phrase you would like to convert to Ubbi Dubbi");
phrase = scan.nextLine();
String Emptystring = "";
for (int i = 0; i < phrase.length(); i++) {
if (phrase.charAt(i) == 'a' || phrase.charAt(i) == 'e' || phrase.charAt(i) == 'i' || phrase.charAt(i) == 'o' || phrase.charAt(i) == 'u') {
Emptystring += "ub";
Emptystring += phrase.charAt(i);
// +ub
// +a
if (phrase.charAt(i+1) == 'a'){
Emptystring += phrase.charAt(i+1);
// +a
// i +1
} else {
if (phrase.charAt(i+1) == 'e') {
Emptystring += phrase.charAt(i+1);
}
}
if (phrase.charAt(i+1) == 'i'){
Emptystring += phrase.charAt(i+1);
}else {
if (phrase.charAt(i+1) == 'o'){
Emptystring += phrase.charAt(i+1);
}
}
if (phrase.charAt(i+1) == 'u') {
Emptystring += phrase.charAt(i+1);
}
}
else {
Emptystring += phrase.charAt(i);
}
// here i am check to see if the String contains any vowels or vowel
// clusters
// here i printed out the new word
}
System.out.println(Emptystring);
return phrase;
}
控制台 输入您要转换为Ubbi Dubbi的短语 你好 你的新短语是地狱 错误
答案 0 :(得分:0)
由于所有这些if / else检查,您的代码很难遵循。
但是当你写出if (phrase.charAt(i+1) ==...
这样的东西时,你只检查下一个字母而不是所有的“元音簇”(这可能导致不必要的“ub”)。当i
将是最后一次迭代时i+1
将不是字符串中的索引。
import java.util.Scanner;
public class Test {
static boolean isVowel(char v) {
if (v == 'a' || v == 'e' || v == 'i' || v == 'o' || v == 'u') {
return true;
}
return false;
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("type in a phrase you would like to convert to Ubbi Dubbi");
String phrase = scan.nextLine();
StringBuilder result = new StringBuilder();
boolean prevVowel = false; //is our vowel part of a cluster?
for (int i = 0; i < phrase.length(); i++) {
if (isVowel(phrase.charAt(i))) {
if(prevVowel==false)
result.append("ub");
prevVowel=true;
}
else
prevVowel=false;
result.append(phrase.charAt(i)); //should be added anyway
}
System.out.println(result);
}
}