最近开始学JAVA,一边练习网络上的题目,
但发现我对于第二次开始使用if 和 else if的用法还是有点不太懂
我查了stackoverflow,上面说到两者最大的差异就是
如果我用if,就代表不管怎么样,系统都会检视
if(i==0){
executes;}
if(i==1){
executes;
}
// 不管有几个,系统都会一一检视,只要符合就会执行
如果是用else if,那第一个条件如果符合,
下面的i==1不管符合不符合都不会执行
if(i==0){
executes;}
else if(i==1){
executes;}
我不知道这样的理解是否正确?
如果是的话,我就不了解为什么下面这个情况,一定要用else if,而不能用if
我做练习的题目是说:
Given a string, if a length 2 substring appears at both its
beginning and end, return a string without the substring at the beginning,
so "HelloHe" yields "lloHe". The substring may overlap with itself,
so "Hi" yields "". Otherwise, return the original string unchanged.
例如:
without2("HelloHe") → "lloHe"
without2("HelloHi") → "HelloHi"
without2("Hi") → ""
所以我试着写的是:
public String without2(String str) {
String result = "";
if ((str.length() == 2)){
result = "";
}
if (str.length() < 2){
result = str;
}
if ((str.length()>2) &&
(str.substring(0,2).equals(str.substring(str.length()-2,str.length())))){
result = str.substring(2, str.length());
} else {
result = str;
}
return result;
}
但这样发现,
without2("Hi") → 应该要是"" 但我的却会跑出"Hi"
without2("xx") → 应该要是"" 但我的却会跑出"xx"
只要我把第二和地三个if ,改成 else if 就全对了
我不懂为什么这里一定要用else if呢?
尤其我一开始就已经写了如果string的长度是2,就应该return ""
为什么还是会跑出原本的字?
我想请问像我这种问题,要看什么书才会学得透彻呢?
因为常常有些细节想不明白,我该怎么学习呢?
谢谢^_^