【300天】我愛刷題系列059(2017.12.02)

叨叨兩句

  1. 300天,該作的都作到了,該說的也都說啦,夠朋友啦~我能夠安心啦~

牛客網——java專項練習038

1

有以下代碼:請寫出程序的輸出結果。java

public class Test
{安全

public static void main(String[] args)
{
    int x = 0;
    int y = 0;
    int k = 0;
    for (int z = 0; z < 5; z++) {
        if ((++x > 2) && (++y > 2) && (k++ > 2))
        {
            x++;
            ++y;
            k++;
        }
    }
    System.out.println(x + 」」 +y + 」」 +k);
}

}code

正確答案: B對象

  1. 432
  2. 531
  3. 421
  4. 523
z=0時候,執行++x > 2,不成立,&&後面就不執行了,此時 x=1,y=0,k=0;
z=1時候,執行++x > 2,還不成立 ,&&後面就不執行了,此時 x=2,y=0,k=0;
z=2時候, 執行++x > 2,成立,繼續執行 ++y > 2, 不成立  , &&後面就不執行了, 此時 x=3,y=1,k=0;
z=3時候,執行++x > 2,成立,繼續執行++y > 2,不成立  , &&後面就不執行了, 此時 x=4,y=2,k=0;
z=4 時候,執行++x > 2,成立,繼續執行 ++y > 2, 成立  , 繼續執行k++>2 ,不成立,此時仍沒有進入for循環的語句中, 但此時 x=5,y=3,k=1;
z=5時候,不知足條件了,整個循環結束,因此最好打印時候: x=5,y=3,k=1;

2

list是一個ArrayList的對象,哪一個選項的代碼填到//todo delete處,能夠在Iterator遍歷的過程當中正確並安全的刪除一個list中保存的對象?()rem

Iterator it = list.iterator();
int index = 0;
while (it.hasNext())
{
    Object obj = it.next();
    if (needDelete(obj))  //needDelete返回boolean,決定是否要刪除
    {
        //todo delete
    }
    index ++;
}

正確答案: Ait

  1. it.remove();
  2. list.remove(obj);
  3. list.remove(index);
  4. list.remove(obj,index);
答案:A
若是在循環的過程當中調用集合的remove()方法,就會致使循環出錯,例如:
for(int i=0;i<list.size();i++){
    list.remove(...);
}
循環過程當中list.size()的大小變化了,就致使了錯誤。
因此,若是你想在循環語句中刪除集合中的某個元素,就要用迭代器iterator的remove()方法,由於它的remove()方法不只會刪除元素,還會維護一個標誌,用來記錄目前是否是可刪除狀態,例如,你不能連續兩次調用它的remove()方法,調用以前至少有一次next()方法的調用。
相關文章
相關標籤/搜索