3 回答

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超3個(gè)贊
編寫代碼時(shí),始終嘗試遵循 KISS 原則。保持簡(jiǎn)單愚蠢。您迷失在嵌套的 for-if while 循環(huán)中,很難找出哪里出了問(wèn)題。
另一個(gè)原則是:不要讓多個(gè)任務(wù)使您的方法超載。使用小而簡(jiǎn)單的方法,一次只執(zhí)行一項(xiàng)任務(wù)。例如,下面我已將reversePhrase和reverseWord放入自己的方法中。這可以幫助您創(chuàng)建一個(gè)干凈的 main 方法。
public static void main(String args[]) {
Scanner userInput = new Scanner(System.in);
System.out.print("Enter a word or phrase: ");
String str = userInput.nextLine();
//if input contains spaces call reversePhrase otherwise reverseWord
//str.contains(" ") is IMO cleaner, but you can change it to str.indexOf(" ") > -1 if you find it better
if(str.contains(" ")){
System.out.println(reversePhrase(str));
}
else{
System.out.println(reverseWord(str));
}
}
private static String reverseWord(String input) {
String result = "";
for(int i = input.length()-1; i >= 0; i--){
result = result + input.charAt(i);
}
return result;
}
private static String reversePhrase(String input) {
String result = "";
while(input.contains(" ")){
result = result + input.substring(input.lastIndexOf(" ")+1) + " ";
input = input.substring(0, input.lastIndexOf(" "));
}
return result + input;
}

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊
在你的 while 循環(huán)中:
while(position >= 0){ //wasn't sure what to put for this parameter
reverseLetter = str.charAt(position); // position stays the same
reverseWord = reverseLetter + reverseWord;
}
它不會(huì)改變 的值position。(position永遠(yuǎn)不會(huì)是 0)我建議position--在最后添加,如下所示:
while(position >= 0){ //wasn't sure what to put for this parameter
reverseLetter = str.charAt(position); // position stays the same
reverseWord = reverseLetter + reverseWord;
position--;
}
它會(huì)改變變量的值position。
另外,您的代碼中有一if和一。else if我建議更改else if為,else因?yàn)檫@樣做毫無(wú)意義:
boolean randomBoolean = new java.util.Random().nextBoolean();
if(randomBoolean){...}
else if(!randomBoolean){...} // If randomBoolean == false, then this code will execute anyway

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個(gè)贊
我已經(jīng)刪除了其中一個(gè)for循環(huán),因?yàn)槟恍枰?。另外,while針對(duì)一個(gè)單詞的情況進(jìn)行循環(huán)。對(duì)于第一種情況,您可以使用另一個(gè)字符串來(lái)臨時(shí)保存最后一個(gè)單詞。結(jié)果如下:
public static void main(String[] args) {
Scanner userInput = new Scanner(System.in);
System.out.print("Enter a word or phrase: ");
String str = userInput.nextLine(); //user-input string
String reversePhrase = ""; //placeholder for reversed phrase
String reverseWord = ""; //placeholder for reversed word
char reverseLetter; //placeholder for letters in reversed word
final String space = " ";
if(str.contains(space)) {
while(str.contains(space))
{
int i = str.lastIndexOf(space);
String lastWord = str.substring(i);
str = str.substring(0, i);
reversePhrase += lastWord;
}
//We add the first word
reversePhrase = reversePhrase + space + str;
System.out.println(reversePhrase.trim());
}
else {
for(int position = str.length() - 1; position >= 0; position --) {
reverseLetter = str.charAt(position);
reverseWord = reverseWord + reverseLetter;
}
System.out.println(reverseWord);
}
}
添加回答
舉報(bào)