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/cn.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灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP