想根据i值(Int)不同的区间,来定义ibatch的值(int),用了switch ,但总是说 case i >= 0 && i <= 3000:
不能将布尔类型转换int。为什么啊
                     switch (ibatch)
                     {
                         case i >= 0 && i <= 3000:
                             ibatch=1;
                             break;
                         case i>3000 && i<=6000:
                             ibatch = 2;
                             break;                         case i > 6000 && i <= 9000:
                             ibatch = 3;
                             break;                         case i > 9000 && i <= 12000:
                             ibatch = 4;
                             break;                         case i > 12000 && i <= 15000:
                             ibatch = 5;
                             break;
                         case i > 15000 && i <= 18000:
                             ibatch = 6;
                             break;                     }

解决方案 »

  1.   

    i >= 0 && i <= 3000   的结果是 bool 类型 false 和 true ,ibatch肯定就是int 了
     
    此消息通过 【CSDN论坛 Winform正式版】 回复!有关此工具
      

  2.   

    我的要求是当 i大于零,小于等于3000,ibatch=1
      

  3.   

    switch/case只能用特定值,不能区间,你这个只能用if/else if/else来写:                         if  (i >= 0 && i <= 3000)
                                 ibatch=1;
                             else if (i>3000 && i<=6000)
                                 ibatch = 2;                         else if ( i > 6000 && i <= 9000)
                                 ibatch = 3;                         else if (i > 9000 && i <= 12000)
                                 ibatch = 4;                         else if (i > 12000 && i <= 15000)
                                 ibatch = 5;
                             else if (i > 15000 && i <= 18000)
                                 ibatch = 6;
      

  4.   

    是这样的,switch-case结构以前也称为“离散化条件词句”,主要是针对离散式的参数进行匹配。
    如:int a;
    switch(a)
    {
        case 0:
            ...;
            break;
        case 1:
            ...;
            break;
    }其实按LZ的需求来说根本不用那么麻烦,一个取整函数就搞定了:
    if(i>=0&&i<=18000)
        ibatch=((int)(i-1))/3000+1;
      

  5.   

    switch-case结构在以前又称作“离散化条件语句”,是用于对离散值进行匹配的条件测试(详细用法再仔细看下课本吧)。其实以LZ的需求而言根本不用那么麻烦,一个取整函数就搞定了:if(i>=0&&i<=18000)
        ibatch=((int)i-1)/3000+1+(i==0);
      

  6.   

    用switch (ibatch)
    就要对 ibatch进行判断的,楼主那样写不太对啊