2016-09-04 4 views
-3

, когда я кладу 10 пакетов, я получаю правильные результаты, но когда я ставлю 58, я получаю неправильные результаты.Gettin неправильные результаты

Мой выход:

Enter the number of packages purchased: 58 
Your total without discount: 5742.0 
The discount is: 1148.4 
The discounted total: 4593.6 

Что он должен иметь:

Enter the number of packages purchased: 58 
Your total without discount: 5742.0 
The discount is: 2411.6 
The discounted total: 3330.3 

package pkg; 

import java.util.Scanner; 

public class Hello { 
    public static void main(String[] args) { 
     double packageCost = 99.00; 
     Scanner user_input = new Scanner(System.in); 
     System.out.print("Enter the number of packages purchased: "); 
     int askPackage = user_input.nextInt(); 
     double withoutDiscount = packageCost * askPackage; 
     double firstDiscount = (packageCost * askPackage) - (withoutDiscount * .20); 
     double secondDiscount = (packageCost * askPackage) - (withoutDiscount * .33); 
     double thirdDiscount = (packageCost * askPackage) - (withoutDiscount * .42); 
     double fourthDiscount = (packageCost * askPackage) - (withoutDiscount * .49); 
     System.out.println("Your total without discount: $" + withoutDiscount); 
     if (askPackage >= 10 || askPackage <= 19) { 
      System.out.println("The discount is: $" + withoutDiscount * .20); 
      System.out.println("The discounted total: $" + firstDiscount); 
     } else if (askPackage >= 20 || askPackage <= 49) { 
      System.out.println("The discount is: $" + withoutDiscount * .33); 
      System.out.println("The discounted total: $" + secondDiscount); 
     } else if (askPackage >= 50 || askPackage <= 99) { 
      System.out.println("The discount is: $" + withoutDiscount * .42); 
      System.out.println("The discounted total: $" + thirdDiscount); 
     } else if (askPackage >= 100) { 
      System.out.println("The discount is: $" + withoutDiscount * .49); 
      System.out.println("The discounted total: $" + fourthDiscount); 
     } 
    } 
} 
+5

Для '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '. –

+0

Пожалуйста, постарайтесь опубликовать лучший форматированный код, код без всех отвлекающих пустых строк. На этот раз я исправил ваш код, но в будущем, пожалуйста, сделайте это сами. Ваши усилия будут с благодарностью оценены. –

+0

@AndrewLygin Я считаю, что ваш комментарий должен быть ответом. – naXa

ответ

-1

Вы должны использовать && вместо || в операторах if else. Все возможные входы обрабатываются в вашем первом состоянии askPackage >= 10 || askPackage <= 19. Таким образом, только входы, которые находятся между 10-19, будут давать вам истинные выходы.

P.S. Вы можете делать такие дисконтные присвоения:

double firstDiscount = (withoutDiscount * .80); 

Или лучшее решение; создайте общую переменную discount и назначьте ее в своих операторах if-else.

+0

Что не так в моем ответе? Я написал исправление и получил пониженное голосование :) – Raptor

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