2015-02-18 5 views
0

поэтому у меня есть эти два класса, называемые отгрузкой и страхованием, один рассчитывает цену на доставку, а другой добавляет страховку. Логика отправки работает нормально, но по какой-либо причине заявления if в классе страхования не работают, я не знаю, что происходит. Выпуск по стоимости страхования всегда равен 2.45. почему он это делает?если логика оператора не работает

класс Пересылка:

package theshipment; 

    public class Shipment extends Main { 
     protected double weight = Double.parseDouble(savedArgs[1]); 
     protected double shippingCost; 
     protected double methodCost; 
     protected String method = savedArgs[2]; 

     public void calculateShippingCost(){ 

     if (weight<=10||weight>=1){ 
      if (method.equalsIgnoreCase("T")) 
       methodCost = weight * 3.00; 
      else if (method.equalsIgnoreCase("A")) 
       methodCost = weight * 4.00; 
      else if (method.equalsIgnoreCase("M")) 
       methodCost = weight * 2.00; 
      else{} 
     }else if (weight<=20||weight>=10.1){ 
      if (method.equalsIgnoreCase("T")) 
       methodCost = weight * 2.45; 
      else if (method.equalsIgnoreCase("A")) 
       methodCost = weight * 3.00; 
      else if (method.equalsIgnoreCase("M")) 
       methodCost = weight * 1.75; 
      else{} 
     }else if (weight>20){ 
      if (method.equalsIgnoreCase("T")) 
       methodCost = weight * 1.95; 
      else if (method.equalsIgnoreCase("A")) 
       methodCost = weight * 2.50; 
      else if (method.equalsIgnoreCase("M")) 
       methodCost = weight * 1.55; 
      else{} 
     }else{} 

    } 
} 

А класс страхования:

package theshipment; 

public class Insurance extends Shipment{ 
    private void calculateInsurance(){ 
     if (methodCost<=10.0||methodCost>=0.0) 
      shippingCost = methodCost + 2.45; 
     else if(methodCost<=30.0||methodCost>=10.1) 
      shippingCost = methodCost + 3.95; 
     else if(methodCost>=30.01) 
      shippingCost = methodCost + 5.55; 
     else{}  
    } 

    public void run(){ 
     calculateShippingCost(); 
     calculateInsurance(); 
    } 

    public String displayOrder(){ 
     return ("Method cost: " + methodCost + " " + "Insurance cost: " + 
       (shippingCost-methodCost) + " Total shipping cost: " + shippingCost); 
    } 

} 
+1

Самый простой способ исправить это с помощью отладчика. Привыкнуть к использованию отладчика в вашей среде IDE, если он у вас есть, а также рассмотреть возможность написания некоторых модульных тестов JUnit – kayakpim

ответ

10

methodCost<=10.0||methodCost>=0.0, что означает, что это будет справедливо, когда methodCost будет больше, чем 0 ИЛИ меньше, чем 10,

Я считаю, что вы хотите, чтобы диапазон не всех номеров менял его на methodCost<=10.0 && methodCost>=0.0

Смежные вопросы