2012-01-26 2 views
2

Я создал калькулятор, чтобы рассчитать стоимость доставки. Код идет что-то вроде этого:Как создать Калькулятор стоимости доставки в Java

class ShippingCalc { 
    public static void main(String[] args) { 
     int weight = 30; 

     if (weight < 10) { 
      System.out.println("Shipping costs $1."); 
     } 
     else if (weight < 20) { 
      System.out.println("Shipping costs $2."); 
     } 
     else { 
      System.out.println("Shipping costs $3."); 
     } 
    } 
} 

Это все здорово, но я хочу, чтобы создать калькулятор, который можно вычислить, основываясь на уже установленные значения. Например, то, что говорит:

if (weight < 250) { 
    // print("Shipping cost is $1); 
} else if (weight < 499) { 
    // print("Shipping cost is $2); 
} else if (weight < 749) { 
    // print...etc and it keeps going 

Это будет на основе пользовательского ввода, поэтому я не хочу, уже есть какие-либо ограничения, как и выше. Можно ли сделать такой калькулятор на Java, независимо от того, насколько он вес, он правильно рассчитывает стоимость доставки и выдает ответ.

Если да, то как это сделать?

+3

Да, это возможно, используя простой математический и письменный код. Почему бы вам не попробовать и посмотреть, что вы придумали. ** ** всегда стараться решать вещи, а затем показывать свои усилия, прежде чем размещать свое задание здесь. Опять же, это не что иное, как самая основная алгебра, я могу поспорить, вы можете понять, положите ли вы карандаш на бумагу. –

+0

Это не мое задание. Я пытаюсь выучить Java как хобби, отсюда и хобби. Что касается попытки, я попробовал, но все, о чем я могу думать, - это ограниченный способ, который потребует бесконечного количества кода. Мне не нужны люди, чтобы сделать это для меня, просто дайте мне толчок в правильном направлении. – javacAA

+0

Редактировать, ну, может быть, не так просто, потому что нет никакой логики для ваших номеров, если она всегда увеличивается на 150 долларов. Вам нужно будет отобразить больше номеров для этого '... etc'. Покажите шаблон полностью, пожалуйста.И я не делал никаких предположений о том, что это домашнее задание, так как мои рекомендации действительны для домашней работы или работы на дому (исходящей от другого hobbiest). –

ответ

4

Для начала вам нужна формула или таблица для расчета стоимости доставки. Например, «доставка составляет один доллар на целых десять фунтов веса».

Затем вы помещаете вес в эту формулу.

System.out.println("Shipping cost is $" + (int)(weight/10)); 

Если вы хотите, формула будет более сложным, вы можете сделать что-то вроде этого:

if (weight < threshold1) // price is first level 
// or, if you like, you can even do a calculation here 
else if (weight < threshold2) // price is second level 

Где пользователи могут определить стоимость threshold1 и threshold2переменных.

Там может быть неограниченное число этих уровней:

// "thresholds" is a sorted array of the weights at which prices change 
int[] thresholds = new int[num_thresholds]; 
for (int checking = 0; checking < thresholds.length; checking++) { 
    if (weight < thresholds[checking]) // price is prices[checking] 
} 

Добро пожаловать в удивительный мир компьютерного программирования!

+0

+1 Прошу прощения, пока не могу. Спасибо за приветствие и ответ. – javacAA

+0

@Borealid, Относительно неограниченного количества уровней. Я не совсем понимаю ваш метод. Можете ли вы изложить это, пожалуйста. Как он может быть неограниченным, если вам нужно установить [num_thresholds]. Что, если вес не имеет предела? – xiphias

1

Если вес затрат соответствует формуле, вы должны использовать его для расчета стоимости (небольшая алгебра никогда не причиняет вреда никому).

Если присвоение веса к стоимости произвольно, вы можете создать NavigableMap с использованием веса в качестве ключа и стоимости в качестве значения.

Затем вы можете использовать NavigableMap<K, V>.lowerEntry(K), чтобы найти максимальный вес, который ниже заданного веса.

Пример

public static Integer findCost(Integer weight, 
     NavigableMap<Integer, Integer> costMap){ 
    Map.Entry<Integer, Integer> cost; 
    cost = costMap.lowerEntry(weight); 
    if(cost == null){ 
     cost = costMap.firstEntry(); 
    } 
    return cost.getValue(); 
} 

benifit использования карты, если вы используете TreeMap в качестве реализации для вашего NavigableMap тогда ваш взгляд окна в среднем будет O (Log п).

+1

+1 Извините, по-видимому, нельзя выдвигать. – javacAA

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