[英]Confused about the brackets in this loop
這是Coding bat(Java版本)中的問題:: 給定一個int數組,如果數組在某個地方包含2,則返回true。 has22({1,2,2})→true has22({1,2,1,2})→false has22({2,1,2})→false
這是我的解決方案:
public boolean has22(int[] nums) {
for (int i=0; i<nums.length-1;i++) {
if (nums[i]==2 && nums[i+1]==2) {
return true;
}
else {
return false;
}
}
}
這樣做時不編譯..
public boolean has22(int[] nums) {
for (int i=0; i<nums.length-1;i++) {
if (nums[i]==2 && nums[i+1]==2) {
return true;
}
else {
}
}
return false;
}
對不起,如果這是一個愚蠢的問題,但我對最后的括號感到困惑。
想象一下你的參數為空或為null
。 您的第一個方法無法編譯,因為它不會為所有情況返回boolean
值。
你的第二個方法編譯,因為在迭代完成后它會在任何情況下返回一個boolean
值。
public boolean has22(int[] nums)
{
for (int i=0; i<nums.length-1;i++)
if (nums[i]==2 && nums[i+1]==2)
return true;
return false;
}
您可以像上面一樣編寫程序,不需要大括號。 對於每個條件語句,如果我們想要將多個語句與任何條件語句相關聯,則一個語句始終存在,然后我們提供{}大括號,例如if(某些條件)
stmt1; 不需要大括號,但如果不止一個語句那么(某些條件){stmt1; stmt2; }
所以永遠記住不止一個語句必須強制並避免問題,因為只要在同一時間關閉時打開一個括號並在其中寫入它會讓你放松一下。 謝謝asif aftab
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.