我有一个程序,需要根据好几个条件来决定最后汇总(jtje)的算法,请问下面的程序有什么不妥之处吗,程序运行总是与实际不相符。
        If 0 < jtzj <= 72 Then
        staty = 1
        jtje = jtsl * 1.3
        End If
        If 0 <= liji < 72 And 72 < jtzj <= 120 Then
        staty = 2
        jtje = (72 - liji) * 1 + (jtsl + liji - 72) * 2.2
        End If
       If 72 <= liji < 120 And 72 < jtzj <= 120 Then
        staty = 3
       jtje = jtsl * 2.2
        End If
        If 0 <= liji < 72 And jtzj > 120 Then
        staty = 4
       jtje = (72 - liji) * 1.3 + (120 - 72) * 2.2 + (liji + jtsl - 120) * 3
        End If
       If 72 <= liji < 120 And jtzj > 120 Then
       staty = 5
       jtje = (120 - liji) * 2.2 + (liji + jtsl - 120) * 3
        End If
       If liji > 120 Then
        staty = 6
       jtje = jtsl * 3
        End If
我的mail是[email protected]

解决方案 »

  1.   

    最大大问题是有的条件根本不可能满足,即程序执行不了正确的算法。
    如If 0 <= liji < 72 And 72 < jtzj <= 120 Then
            staty = 2
            jtje = (72 - liji) * 1 + (jtsl + liji - 72) * 2.2
            End If
      

  2.   

    0 <= liji < 72 
    这种语句根本不是程序里应该出现的东西
    必须这样写:liji>=0 and liji<72
      

  3.   

    If 0 < jtzj <= 72 Then
       staty = 1
       jtje = jtsl * 1.3
    else if 0 <= liji < 72 And jtzj <= 120 Then
       staty = 2
       jtje = (72 - liji) * 1 + (jtsl + liji - 72) * 2.2
    else If liji < 120 And jtzj <= 120 Then
        staty = 3
        jtje = jtsl * 2.2
    else If 0 <= liji < 72 And jtzj > 120 Then
        staty = 4
        jtje = (72 - liji) * 1.3 + (120 - 72) * 2.2 + (liji + jtsl - 120) * 3
    else if liji < 120 And jtzj > 120 Then
        staty = 5
        jtje = (120 - liji) * 2.2 + (liji + jtsl - 120) * 3
    else If liji > 120 Then
        staty = 6
        jtje = jtsl * 3
    End If
    你用许多单个IF语句,前面把值改变了,你后边又肯定错
      

  4.   

    你必须只用一个if语句
    if then
        ...
    elseif then
        ...
    .
    .
    .
    end if
      

  5.   

    if 
    elseif
    ....
    ....
    ...
    ...
    else
    endif
    1<a<4
    不是算法
      

  6.   

    呵,程序设计要严格一些,象a<b<c之类的东东最好别用,自个都会糊涂。
      

  7.   

    还有,多加括号吧,括号多了不坏菜。
    如 if (a<b and b<c) then ……
    等等。
    最后就是自个小心再小心的分释条件了。我调程序时喜欢在一些不清楚的地方加上msgbox(a).
    把要监视的a变量让msgbox给提示出来,msgbox作出提示时会自动停止程序的运行,非常适合程序调试。
      

  8.   

    多谢,
    可我也用了ELSEIF 的呀,程序就是得不到正确的结果
    我再再看看,有好建议请大家多提