我遇到了一个问题我正在制作一个l33t的翻译,而我的翻译从英语到l33t的工作对我的l33t到英语作品除了你和正在发生的事情是打印三个U我已经尝试把它从for循环,它只打印一个,但它打印它在单词的开头,我尝试将它放在for的底部,它甚至不打印一个。我也试过if(phrase.charAt(i) == '|') && phrase.charAt(i+1) == '_' && phrase.charAt(i+2) == '|').
这就是我得到的。
public static String translateToEnglish(String phrase) {
Scanner scan = new Scanner(System.in);
System.out.println("Hello what pharse would you like to convert in to l33t");
phrase = scan.nextLine();
String NewString = "";
for (int i = 0; i < phrase.length(); i++) {
if (phrase.charAt(i) == '4') {
NewString += "a";
}
if (phrase.charAt(i) == '8') {
NewString += "b";
} else {
if (phrase.charAt(i) == '3') {
NewString += "e";
}
}
if (phrase.charAt(i) == '1') {
NewString += "l";
} else {
if (phrase.charAt(i) == '0') {
NewString += "o";
}
}
if (phrase.charAt(i) == '5') {
NewString += "s";
} else {
if (phrase.charAt(i) == '7') {
NewString += "t";
}
}
if (phrase.contains("|_|")) {
NewString += "u";
}
if (phrase.charAt(i) == '2') {
NewString += "z";
}
if (phrase.charAt(i) == 'c' || phrase.charAt(i) == 'd' || phrase.charAt(i) == 'f' || phrase.charAt(i) == 'g'
|| phrase.charAt(i) == 'h' || phrase.charAt(i) == 'i'
|| phrase.charAt(i) == 'j' || phrase.charAt(i) == 'k' || phrase.charAt(i) == 'm' || phrase.charAt(i) == 'n'
|| phrase.charAt(i) == 'p' || phrase.charAt(i) == 'q'
|| phrase.charAt(i) == 'r' || phrase.charAt(i) == 'v' || phrase.charAt(i) == 'w' || phrase.charAt(i) == 'x'
|| phrase.charAt(i) == 'y') {
NewString += phrase.charAt(i);
}
// if (phrase.charAt(i) == 'c') {
}
System.out.println(NewString);
return phrase;
}
答案 0 :(得分:2)
对于单词中的每个字符,您检查它是否包含“u”。它总是如此,因为你没有检查单词的特定位置。你必须检查一个|然后是_后跟|然后添加一个“u”而不是通常检查它是否在输入中的某个位置。
答案 1 :(得分:0)
您对|_|
的if语句正在进行String#contains
比较,但未被删除。因此,对于循环中的每次迭代,如果短语包含这个字符序列,它将打印一个u。
如果您使用替代方法检查i,i + 1,i + 2中的每个字符,您首先必须确保您的短语足够长,然后如果确实如此,那么在if语句中您必须确保你增加3即
if(phrase.length() < i+2
&& phrase.charAt(i) == '|')
&& phrase.charAt(i+1) == '_'
&& phrase.charAt(i+2) == '|')
{
NewString += "u";
i += 2; // Will get the third increment from loop
continue;
}
此外,如果您确保结构始终为if..if else...else
,那么最终检查位置只是替换为相同的字符,可以简化为其他而不需要或一起使用其他所有字符