推 gasbomb: 用debugger一步一步看吧 常看就習慣了 03/13 20:21
→ GGing: 這跟程式語言無關,單純邏輯問題 03/13 21:23
→ sluggard: 喔~可能真的是邏輯,因為我真的還沒想通為什麼不能用 03/13 22:02
→ sluggard: if,一定要用else if,而且基本觀念理解卻無法應用妥當 03/13 22:03
推 snowlike: 因為你的第三個 if 把前面已經判斷過的res覆寫掉了 03/13 22:13
→ ssccg: 其實java沒有elseif,只有else後接的是個if statement 03/13 23:13
→ ssccg: 你把else的括號補上去就知道差在哪了 03/13 23:13
真的非常謝謝您!不過我還是有點不懂您所說的是什麼意思...
不是有if...else if....else if ...else 和
if...if...if...else...兩種嗎?
→ ssccg: 至於你寫的程式,你最後的else相當於if (str.length() <= 2 03/13 23:19
→ ssccg: || !(str.substring(0,2).equals ...)) 跟你的結果符合啊 03/13 23:21
→ ssccg: 「尤其我一開始就已經寫了如果string的長度是2,就應該retu 03/13 23:22
→ ssccg: rn ""」這句,你往上看看你寫的明明是 result = "",並沒有 03/13 23:23
→ ssccg: return "",程式是照你寫的跑的,不是照你認為的跑的 03/13 23:23
謝謝您!不過我的else那裡不是應該是相當於if (str.length()>2 && ...)
為什麼您覺得是<=2 || ?
我把我的思路一步一步寫清楚,還是不了解為什麼一模一樣的code
改成else if就對(我有附上圖)
→ ssccg: 只有你寫錯,沒有什麼一定要用else if 03/13 23:24
謝謝您,的確向您所說,需要一步驟一步驟看,但我還是沒想通,
因為我的邏輯一開始就是
public String without2(String str) {
//我先把結果寫成String result = "";
String result = "";
// 如果字的長度等於2,我的result就是"" empty string
if ((str.length() == 2)){
result = "";
}
// 如果字的長度小於2,result就等於原本的字
if (str.length() < 2){
result = str;
}
// 如果字的長度大於2,而且字最前面的兩個字母和最後的兩個字母一樣的話
if ((str.length()>2) &&
(str.substring(0,2).equals(str.substring(str.length()-2,str.length())))){
// result 就把字的前兩個字元刪掉
result = str.substring(2, str.length());
// 其他的情形,(字的長度大於2 而且&&字的前兩個字母和最後兩個字母不一樣)
} else {
// result 就是原本的字
result = str
}
// 根據上面各種情況決定result是哪一個
return result;
}
但這樣時就會有錯 (我貼上圖可能比較清楚)
https://imgur.com/Rcch9FN
但一模一樣寫法,只要改成else if就對了 (同樣也貼上圖)
https://imgur.com/jclPYLb
→ ssccg: 這種基本的control statement,你不能只是模糊的記說很多個 03/13 23:27
→ ssccg: if連續大概怎樣,你要很明確的知道你寫的每一個if,會造成 03/13 23:29
→ ssccg: 程式依什麼順序執行,哪幾行是條件成立時會執行的,哪幾行 03/13 23:32
→ ssccg: 是條件不成立執行的,哪幾行是一定會執行的 03/13 23:32
謝謝您,這真的是我最想搞清楚的...我也一直一點一點想,
但不知道自己的盲點在哪
我把圖放上去可能比較清楚,
希望能真正明確的瞭解,謝謝您的幫忙!
※ 編輯: sluggard (61.227.39.208 臺灣), 03/14/2022 01:02:46
→ qrtt1: 講那麼多,有沒有先依著前面推薦的 debugger 去走一遍流程? 03/14 09:01
→ sluggard: 謝謝大家的建議!我是線上練習,不懂怎麼debug,不會我 03/14 12:07
→ sluggard: 盡快學怎麼在Eclipse裡面練習debug,而不是直接在線上寫 03/14 12:09
→ MonyemLi: 程式由上而下執行,只有幾個指令能跳出。else if 不能 03/17 16:34
→ MonyemLi: 獨立使用,是if命令的選用 03/17 16:34
推 aidansky0989: 順序結構、分支結構、循環結構統稱編程第一範式, 04/04 14:35
→ aidansky0989: 可以驗證所有的執行結果 04/04 14:35
→ roshia: 回傳值為String的方法,在該return的時候沒return,要馬補 04/23 21:30
→ roshia: 上return 要馬補上else 04/23 21:30
→ didibi: 不知道問題解決了嗎?我在想應該是因為最後一個if…else 05/09 23:01
→ didibi: 的部分,你認為的else是指「除了以上有列出以外的所有情 05/09 23:01
→ didibi: 況」,但實際上這裡的else指的是「除了最後一個if以外的 05/09 23:01
→ didibi: 情況」(字的長度沒有大於二,或是…) 05/09 23:01
→ didibi: 如果是用一個if後面else if的話就會先判斷,不符合再往下 05/09 23:01
→ didibi: 一個判斷,比較符合你的邏輯~ 05/09 23:01