java 板


LINE

: → 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...兩種嗎? 沒有兩種 只有 if-else 一種 if ( Expr1 ) { Stmts1 } else if ( Expr2 ) { Stmts2 } else { Stmts3 } 其實相當於 if ( Expr1 ) { Stmts1 } else { if ( Expr2 ) { Stmts2 } else { Stmts3 } } else if 寫法只是else內容是又一個 if-else 的簡短寫法 調整過縮排後就很清楚 整段程式的所有Statements都是屬於第一個 if-else 控制的範圍內 Stmts2、3會不會執行跟第一個 if 是有關係的 而 if ( Expr1 ) { Stmts1 } if ( Expr2 ) { Stmts2 } else { Stmts3 } 第一個 if 控制的範圍就到 Stmts1而已 後面的Stmts2、3會不會執行就跟第一個 if 完全沒有關係 else 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) { // 定義一個變數 result,初始值設成 ""; : String result = ""; // 執行到此,如果str的長度等於2,把變數result 設成 "" : if ((str.length() == 2)){ : result = ""; : } // 執行到此,如果str的長度小於2,把變數result 設成 str : if (str.length() < 2){ : result = str; : } // 執行到此,如果str的長度大於2,而且str最前面的兩個字母和最後的兩個字母一樣 : if ((str.length()>2) && : (str.substring(0,2).equals(str.substring(str.length()-2,str.length())))){ // 把 result 設成 str 去掉前兩個字元的字串值 : result = str.substring(2, str.length()); // 如對應的 if 不成立(字的長度小於或等於2,或前兩個字母和最後兩個字母不一樣) : } else { // 把 result 設為 str : result = str : } // 完整的 if-else 會包含全部的情況 // 所以執行到此,result 的初始值和前兩個 if 完全多寫的 // result 目前的值只看最後這個 if-else // 執行到此,不管上面執行了什麼,回傳現在 result 的值 : return result; : } 再讓我提一次你這句 「尤其我一開始就已經寫了如果string的長度是2,就應該return ""」 整段程式看下來顯然沒這回事,最後面才有return 反而是如果你沒有多用 result 這個變數 而是每個 if 裡面真的是直接寫 return 那就會跟你想的一樣 但是你用的就不是 return : 但這樣時就會有錯 (我貼上圖可能比較清楚) : https://imgur.com/Rcch9FN : : 但一模一樣寫法,只要改成else if就對了 (同樣也貼上圖) : https://imgur.com/jclPYLb 你把 else if 照前面展開成適當的縮排 你就知道兩段程式流程控制結構完全不一樣 不是一模一樣的寫法 : : → ssccg: 這種基本的control statement,你不能只是模糊的記說很多個 03/13 23:27 : → ssccg: if連續大概怎樣,你要很明確的知道你寫的每一個if,會造成 03/13 23:29 : → ssccg: 程式依什麼順序執行,哪幾行是條件成立時會執行的,哪幾行 03/13 23:32 : → ssccg: 是條件不成立執行的,哪幾行是一定會執行的 03/13 23:32 : : 謝謝您,這真的是我最想搞清楚的...我也一直一點一點想, : 但不知道自己的盲點在哪 : 我把圖放上去可能比較清楚, : 希望能真正明確的瞭解,謝謝您的幫忙! --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.150.124.138 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/java/M.1647194720.A.03C.html ※ 編輯: ssccg (118.150.124.138 臺灣), 03/14/2022 02:07:06
1F:推 sluggard: 真的非常非常謝謝您這麼詳細的解說!我真的學到好多... 03/14 12:12
2F:→ sluggard: 原來我整個思維都錯了,而且連return的用法都不是很清楚 03/14 12:13
3F:推 sluggard: 甚至return的位置讓output全錯亂我都沒發現,學得太差了 03/14 12:18
4F:推 sluggard: 謝謝您花這麼多時間一步一步講解!真的受益良多! 03/14 12:20







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Boy-Girl站內搜尋

TOP