2017-02-20 131 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

它的实际尺寸在进入该周期