2017-02-20 122 views
0

我一直在解決以下代碼,並無法弄清爲什麼沒有在ArrayList unavDays中顯示出來。任何幫助表示讚賞。嵌套for循環和參數值

我測試單獨的塊:

  • 第一if語句的計算結果爲 '真'
  • unavTimesConv.size()/ 2 == 1
  • unavDaysTemp [0] .equals(」 M「)=='true'

我知道如果沒有完整的圖片,代碼背後的想法可能很難理解。我希望我忽略了一個小的語法錯誤。是0,你從0迭代i直到

List<Integer> unavTimesConv = new ArrayList<Integer>();

那麼顯然unavTimesConv.size() = 0,因爲在創建的默認構造函數列表的大小而定:感謝

List<Integer> unavTimesConv = new ArrayList<Integer>(); 
List<String> unavDays = new ArrayList<String>(); 
String[] unavDaysTemp = request.getParameterValues("days"); 


if(request.getParameterValues("days") != null) 
{   
    for(int i = 0; i < (unavTimesConv.size()/2); i++) 
    { 
     for(int j = (7*i); j < (7*(i+1)); j++) 
     { 
      if(unavDaysTemp[j].equals("M")) 
      { 
       unavDays.add("M"); 
      } 
      else if(unavDaysTemp[j].equals("T")) 
      { 
       for(int k = 0; k < 1; k++) {unavDays.add(null);} 
       unavDays.add("T"); 
      } 
      else if(unavDaysTemp[j].equals("W")) 
      { 
       for(int k = 0; k < 2; k++) {unavDays.add(null);} 
       unavDays.add("W"); 
      } 
      else if(unavDaysTemp[j].equals("TH")) 
      { 
       for(int k = 0; k < 3; k++) {unavDays.add(null);} 
       unavDays.add("TH"); 
      } 
      else if(unavDaysTemp[j].equals("F")) 
      { 
       for(int k = 0; k < 4; k++) {unavDays.add(null);} 
       unavDays.add("F"); 
      } 
      else if(unavDaysTemp[j].equals("S")) 
      { 
       for(int k = 0; k < 5; k++) {unavDays.add(null);} 
       unavDays.add("S"); 
      }   
      else {unavDays.add("Something busted");} 

     } 

    } 

} 
+4

井的時間是0,'unavTimesConv'最初是空的時;所以'i'循環永遠不會被輸入,因爲'0 <(unavTimesConv.size()/ 2)'立即是錯誤的。 –

+0

OP聲稱它已經過測試......測試必須有錯誤。 'unavTimesConv.size()/ 2 == 1'不正確。 –

回答

0

所以你的列表創建爲0/2=0,那麼任何迭代都不會發生,因爲明顯的是

0 < 0 == false

我想你剛纔漏掉了一些測試

unavTimesConv.size()/2

它的實際尺寸在進入該週期