2014-02-01 2 views
0

Итак, я, похоже, правильно поставил большинство этой программы. Попросите меня проскользнуть, я понял, что я что-то пропустил и вернулся и добавлю его. Теперь, когда я запускаю программу для финального теста, я понимаю, что он больше не вычисляет мили правильно. Например, я вводим 500 и получаю 1 взамен на количество отправленных миль.Программа доставки

input = JOptionPane.showInputDialog("Enter package weight: "); 
    weight = Double.parseDouble(input); 

    input = JOptionPane.showInputDialog("Enter approximate miles package is being shipped: "); 
    miles = Integer.parseInt(input); 
    miles = (miles+499)/500; 

    input = JOptionPane.showInputDialog("Enter number of units shipped: "); 
    units = Integer.parseInt(input); 

Я знаю, что я не делаю математику правильно, чтобы найти правильное количество заряженного за единицу, но то, что в отношении сейчас находится миля показывается неправильно в моем выходе. Какие-либо предложения? Благодаря!

+4

Что бы результат '499/500', если вы должны были сохранить результат как' int'? –

ответ

1

Предполагается, что miles объявлен как double (если это не так, вы должны объявить его как double, чтобы вы могли присвоить ему реальное число). Эта линия

miles = (miles+499)/500; 

делает целочисленное деление (int/int = int). Чтобы получить двойной, вы должны бросить его:

miles = (double)(miles+499)/500; 

или, как это было предложено @Vulcan

miles = (miles+499)/500.0; // here 500.0 is a double 
+0

В моем случае мне было поручено объявить расстояние (мили) целым числом. Или в моих инструкциях есть опечатка? –

+0

Какой желаемый результат (значение «миль»)? – Christian

+0

Он должен просто выводить любую сумму, которую вводит пользователь. Будь то 500 или любой другой номер. В моем случае это должно быть 876. Стоимость доставки рассчитана правильно. Только отсутствие миль, которые отправляются. –

0

Похоже, тип данных miles переменной int .Please изменить его double и повторно запустите приложение.

Также согласно ур комментарий обновляя логики:

Пусть вход Введен:

double weight = 7; //input 
double miles = 550; //input 
double unit = 2;  //input 
double charges =0; //charge of the shipment initialise with 0 

charges = (3.70*miles*unit*weight)/(500*7); 

System.out.println("The charges is "+charges); 

Заряды 1 единицу составляет $ 3,70 за 7 фунт веса на 500 миль.

обновить Также существующий код:

miles = Integer.parseInt(input); //Use double as conversion 
miles = (miles+499)/500;   // remove the line 
+0

Это то, что мне было поручено оставить его как внутр. Поэтому я не смущен. –

+0

Поскольку результат миль может быть в двойном bcoz, вы делите сумму, поэтому вам нужно изменить тип данных. Pzz измените тип данных, чтобы удвоить и продолжить. Давайте будем знать, работает ли это: – Kick

+0

Если бы я изменил все к double i изменит результат на 1.998 .. что неверно. Обвинения не пропорциональны, поэтому, независимо от того, я ввожу 500 или 550, он все равно должен взимать ту же сумму. Я не уверен, что это имеет смысл для всех, кроме меня. Я ужасно объясняю. –

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