2016-02-25 3 views
0

У меня есть пара команд else/if в моем коде ниже. Однако я хочу установить конечную переменную, которая будет устанавливать окончательный оператор if в зависимости от ввода пользователей. Допустим, пользователь решил купить 6-дюймовый токарный станок. Применяемая скидка будет lathecost * 0.10. Я хочу сохранить эту переменную, чтобы использовать ее в будущем. Тем не менее, я не хочу создавать отдельную переменную, если пользователь выбирает 2 или 0. Я хочу, чтобы переменная знала, что выбрал пользователь, и в зависимости от того, что если/else оператор itll сохранит это. Если пользователь выбирает 2-й, то он сохраняет окончательную стоимость lathecost * 0,05, если пользователь выберет 10 itll, сохранит окончательную стоимость lathecost * 0.10 и так далее. Как я могу это достичь?Variable off a Else If Condition statement

double numlathe; 

    numlathe = input.nextFloat(); 
    final double priceoflathe = 20000; 
    double lathecost = priceoflathe * numlathe; 


    if (numlathe<0) { 
     System.out.println("No discount applicable for 0 number of lathe purchase"); 
    } 
    else if(numlathe<2) { 
     System.out.println("Discount of lathe matchine purchase = 0 "); 
    } 

    else if(numlathe<5){ 
     System.out.println("There is discount that can be applied"); 

     System.out.println("Total cost so far is" + lathecost * 0.05 + " dollars"); 
    } 

    else if(numlathe>=5){ 
     System.out.println("There is discount that can be applied."); 

     System.out.println("Total cost so far with discount is " + lathecost * 0.10 + " dollars"); 
    } 
+0

Я немного смущен. Вам нужна переменная, которая сохранит окончательную стоимость (с дисконтом, если дано) или переменную, которая сообщит вам позже, если бы была предоставлена ​​скидка любого вида? –

ответ

2

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

Фактически, я бы немного изменил ваш дизайн, чтобы сохранить пропорцию, которая дисконтирована - так что 0 без скидки, 0.05 на 5% и т. Д. Затем вы можете отделить «расчетную скидку» от части «Дисконтная скидка»:

private static final BigDecimal SMALL_DISCOUNT = new BigDecimal("0.05"); 
private static final BigDecimal LARGE_DISCOUNT = new BigDecimal("0.10"); 
private static BigDecimal getDiscountProportion(int quantity) { 
    if (quantity < 0) { 
     throw new IllegalArgumentException("Cannot purchase negative quantities"); 
    } 
    return quantity < 2 ? BigDecimal.ZERO 
     : quantity < 5 ? SMALL_DISCOUNT 
     : LARGE_DISCOUNT; 
} 

Тогда:

int quantity = ...; // Wherever you get this from 
BigDecimal discountProportion = getDiscountProportion(quantity); 
BigDecimal originalPrice = new BigDecimal(quantity).multiply(new BigDecimal(20000)); 
BigDecimal discount = originalPrice.multiply(discountProportion); 
// TODO: Rounding 
if (discount.equals(BigDecimal.ZERO)) { 
    System.out.println("No discount applied"); 
} else { 
    System.out.println("Discount: " + discount); 
} 
BigDecimal finalCost = originalPrice.subtract(discount); 

Обратите внимание на использование BigDecimal здесь вместо double - double, как правило, непригодны для валютных ценностей.

+0

Это похоже на то, что мне нужно, но Im unsure why. Если я пытаюсь использовать этот код, eclipse постоянно дает мне ошибки. Некоторые из них: Bigdecimal строка не определена, незаконный параметр для small_discount и т. Д. Я по-прежнему новичок в java, поэтому извиняюсь за эти вопросы. –

+1

@KonfuChicken: Вы импортировали 'BigDecimal' для начала? ('import java.math.BigDecimal;') - Там действительно * есть * конструктор 'BigDecimal (String)', поэтому вы должны быть в порядке ... –