2017-02-23 39 views
-3

для моего задания в моем классе java, мы должны написать калькулятор доставки для расчета окончательной стоимости доставки на основе «фиксированных ставок» «за« весовой класс »за« 500 миль отправлено », это инструкции.Пытаясь написать простую программу в java, чтобы рассчитать стоимость доставки, используя else if, и я полностью потерял

The Fast Freight Shipping Computer charges the following rates: 
Weight of Package Rate per 500 Miles Shipped 
2 pounds or less $1.10 
Over 2 pounds but not more than 6 pounds $2.20 
Over 6 pounds but not more than 10 pounds $3.70 
Over 10 pounds $3.80 

The shipping charges per 500 miles are not prorated. For example, if a 2 pound 
package is shipped 550 miles, the charges would be $2.20. Write a program that asks 
the user to enter the weight of a package and the distance traveled, 
and then displays the shipping charges. 

мой учитель хочет, чтобы мы, используя «еще» и «если» для этого задания, но я его не будете возражать, если его немного фантазер, он на самом деле тот, кто предложил использовать переполнение стека для помощи, поэтому я здесь.

В принципе, я не могу понять, как заставить его заряжать за 500 миль и применить его к программе. Если кто-то может помочь, я бы очень признателен и хотел бы узнать, как вы это поняли и почему вы сделали бы это так, как хотите.

Прошу прощения за длинный вопрос, но я в недоумении. ив попробовал это несколько раз и перезапущен с нуля больше, чем я хотел бы признать свою последнюю Heres попытку:

public static void main(String[] args) { 

    // Declarations 

    double finalPrice; 
    double shippingRate; 
    int milesShipped; 
    double packageWeight; 
    Scanner keyboard = new Scanner(System.in); 

    // Get user input 

    System.out.print("Please enter the weight of package in Pounds: "); 
    packageWeight = keyboard.nextDouble(); 

    System.out.print("Please enter the miles traveled in miles: "); 
    milesShipped = keyboard.nextInt(); 

    //Computations 

    if (packageWeight <= 2) { 
     shippingRate = 1.10; 
    }else if (packageWeight >= 2 && packageWeight <= 6) { 
     shippingRate = 2.20; 
    }else if (packageWeight >= 6 && packageWeight <= 10) { 
     shippingRate = 3.70; 
    }else { 
     shippingRate = 3.80; 

    } 
    if (milesShipped <= 500) { 
     finalPrice = shippingRate; 
    }else if (milesShipped >= 500.0 && milesShipped <= 1000.0) { 
     finalPrice = shippingRate; 
    } 

    ///Display results 

    System.out.println("your shipping charges are calculated to be " + '$'+ finalPrice); 
+0

мои профессора говорят, что тоже, это называется обучение от кого-то другого. Он выполнил большую часть работы и просто нуждается в небольшом объяснении. – sbowde4

+0

Вы можете целочисленно делить «миль» на 500, чтобы рассчитать, какое число нужно умножить на 'shippingRate, чтобы получить« finalPrice ». Итак, предположим, что пользователь ввел '1200.5' для' milesShipped'. Целочисленное деление на 500 дает 2. Умножьте это на 'finalPrice', которое вы уже рассчитали. –

+0

@ sbowde4 Я по существу не могу понять, как применять математику по-дружески. – ZombieCobra95

ответ

0

Удалить

if (milesShipped <= 500) { 
     finalPrice = shippingRate;//this never updates for each 500 miles 
    }else if (milesShipped >= 500.0 && milesShipped <= 1000.0) { 
     finalPrice = shippingRate; 
    } 

заменить его на код ниже

while (milesShipped > 0) { 
     finalPrice += shippingRate; 
     milesShipped -= 500;//subtract 500 from the miles till it is less than 0 
    } 

Код будет работать до тех пор, пока он не станет меньше 0, каждая итерация цикла до тех пор добавит стоимость доставки к окончательной цене за каждые 500.

Допустим, пользователь вводит 1500 для пакета 2 фунта

first iteration 
finalPrice = 1.10 
milesShipped-500 = 1000 
second iteration 
finalPrice = 2.20 
milesShipped-500 = 500 
third iteration 
finalPrice = 3.20 
milesShipped-500 = 0 

the loop now terminates since milesShipped is no longer greater than 0. 
+0

чувак благодарит вас так много, что сработало отлично! вы случайно знаете, как я могу изменить свой вывод, чтобы отображать $ X.XX вместо $ XX, как 4.4 против 4.40. – ZombieCobra95

+0

Вы можете использовать 'System.out.printf (« ваши расходы на доставку рассчитаны как% .2f% n " , finalPrice); ''% .2f' означает «с плавающей запятой», «2 десятичных разряда» и «% n» означает новую строку. – sbowde4

+0

дополнительную документацию по printf можно найти здесь https://docs.oracle.com/javase/tutorial/java/data/numberformat.html, также, если мой ответ помог, пожалуйста, подумайте о том, чтобы отметить его как правильно :) – sbowde4