2014-09-03 2 views
0

Хорошо, поэтому я только начал эту домашнюю лабораторию, и у меня немного проблемы. Я искал любые решения, но все они кажутся более сложными, чем то, что я могу понять. Я ищу необходимые доллары и необходимые изменения, чтобы что-то купить. Я просто придумал некоторые цифры, и когда я запустил файл, я получил сообщение об ошибке. Может ли кто-нибудь помочь мне найти, как заполнить уравнения, чтобы получить значение суммы. Также доллары должны быть int и не удваиваться. ИзменениеNeeded может быть двойным. Любая помощь будет принята с благодарностью.Фиксация метода и ошибка параметра

java:30: error: possible loss of precision 
    findDollars = xboxOne + newGame; 
         ^
required: int 
found: double 
1 error 

public class MoneyNeeded 
{ 
public static void main(String[] args) 
{ 
    double xboxOne, newGame, moneyNeeded; 
    xboxOne = 320.41; 
    newGame = 64.36; 
    moneyNeeded = findMoney(xboxOne, newGame); 
    System.out.println(moneyNeeded); 

    int dollarsNeeded; 
    dollarsNeeded = findDollars(xboxOne, newGame); 
    System.out.println(dollarsNeeded); 

    double changeNeeded; 
    changeNeeded = findChange(xboxOne, newGame); 
    System.out.println(changeNeeded); 
} 

public static double findMoney(double xboxOne, double newGame) 
{ 
    double findMoney; 
    findMoney = xboxOne + newGame; 
    return findMoney; 
} 

public static int findDollars(double xboxOne, double newGame) 
{ 
    int findDollars; 
    findDollars = xboxOne + newGame; 
    return findDollars; 
} 

public static double findChange(double findDollars, double findMoney) 
{ 
    double findChange; 
    findChange = findMoney % findDollars; 
    return findChange; 
} 
} 
+0

"я получаю сообщение об ошибке" довольно расплывчато. Можете ли вы опубликовать сообщение об ошибке? –

+0

Я сделал .. Первый раздел наверху. – Junior110697

+0

У вас есть попытка 'findDollars = xboxOne.intValue() + newGame.intValue();'? –

ответ

0

Так что вы можете сделать:

findDollars = xboxOne.intValue() + newGame.intValue(); 

или

findDollars = (int)(xboxOne + newGame); 
+0

Это мой вывод. Мне нужно просто вычесть первые два метода, чтобы получить 0.77, но вместо этого я получаю -256. Я не понимаю, почему это результат. -------------------- Конфигурация: -------------------- 384.77000000000004 -256.05 Процесс завершен. – Junior110697

+0

Почему вы используете Integer в одном методе? и вы хотите вычесть вывод 'findChange()' и 'findMoney()' из вывода 'findDollars()'? правильно. –

+0

Почему вы не используете '-' вместо'% '? –

0

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

Если вы нормально с потерей дробной части, вы можете явно отбросить его легко:

findDollars = (int)(xboxOne + newGame); // Simply truncate the decimal part away 

Но, как правило, не является хорошей идеей, вызвать 0,2 + 0,2 возвратит 0.

+0

Да, это то, что я пытаюсь сделать. Я хочу найти int # долларов. Без изменений. Скажем, что-то стоит 2,42 доллара. Мне нужно 2 доллара. – Junior110697

+0

Хорошо, это решило ошибку, и я получил это как результат – Junior110697

+0

Первые два ответа верны, но последний должен быть 0.77 384.77000000000004 64.36 – Junior110697

0

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

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