2012-02-26 4 views
1

У меня проблема, выход должен быть двойной, но вместо этого это строка Я пытаюсь добавить два двойных значения, но это дает его как строку. Я использую eclipse. В настоящее время программа компилируется и работает. Если у кого-нибудь есть момент, я бы это оценил. Ребята, ребята. Вот исходный код.double + double = String?

import java.util.Scanner; 

public class FutureInvestment 
{ 
    public static void main(String[] args) 
    { 
     Scanner input = new Scanner(System.in); 

     System.out.println("Enter investment amount: "); 
     double investmentAmount = input.nextDouble(); 

     System.out.println("Enter monthly interest rate: "); 
     double monthlyInterestRate = input.nextDouble(); 

     System.out.println("Enter number of years: "); 
     int numberOfYears = input.nextInt(); 

     double futureInterestValue = investmentAmount * (Math.pow((1 + monthlyInterestRate), numberOfYears * 12)); 
     System.out.println("Accumulated value is: " + futureInterestValue + investmentAmount); 


    } 

} 
+0

Вот результат я получаю Введите сумму инвестиций: Введите месячную процентную ставку: 4,25 Введите число лет : накопленное значение: 4.384414858452464E111000.0 – Kiril

+0

И ожидаемый исход накопленное значение 1043,34 – Kiril

+0

Я предполагаю, что мой ответ может помочь вам –

ответ

2

Вам необходимо отформатировать вывод.Вы можете использовать DecimalFormat или вы можете попробовать функцию String#format:

System.out.println(
    String.format("Accumulated value is: %.2f", 
     futureInterestValue + investmentAmount)); 

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

double accumulatedValue = futureInterestValue + investmentAmount; 
System.out.println(
    String.format("Accumulated value is: %.2f", accumulatedValue); 
0

у вас отсутствуют некоторые скобки, поэтому ваш оператор запускается слева направо, тем самым добавляя double к строке. Вам нужно будет что-то вроде:

System.out.println ("накопленное значение:" + (futureInterestValue + investmentAmount));

1
double accumulatedValue = futureInterestValue + investmentAmount; 
System.out.println("Accumulated value is: " + accumulatedValue); 

Попробуйте это.

Вы получали String как результат конкатенации, так как всякая конкатенация строки преобразуется в строку. Поэтому вам необходимо заранее указать значение, как показано выше, или вам нужны скобки.

+0

тот же результат: накопленное значение: 4.384414868452464E11 – Kiril

+1

Если вы имеете в виду «E» внутри номер, это двойная запись, а не строка –

1

Я думаю, что изменить его на это будет работать:

double futureInterestValue = investmentAmount * (Math.pow((1 + monthlyInterestRate/100), numberOfYears * 12)); 
    System.out.println("Accumulated value is: " + (futureInterestValue + investmentAmount)); 
+0

Я боюсь, это не работает У меня есть следующий вывод ==> Накопленное значение: 4.384414868452464E11 – Kiril

+0

Я думаю, что ваш расчет неправильный, вам нужно сначала делить 100 на проценты, я обновил свой код –

0
System.out.println("Accumulated value is: " + (futureInterestValue + investmentAmount)); 

После первого +, Java имеет сцепляются первую строку с первого дубля, в результате чего в строке. Затем он выполняет еще одну конкатенацию со вторым двойным. Сначала вам нужно вычислить результат, прежде чем сделать из него строку.

2

Поскольку вы делаете это в println, он выполняет конкатенацию строк. Если вы хотите добавить double вместе, вам нужно сгруппировать их с помощью().

Попробуйте

System.out.println("Accumulated value is: " + (futureInterestValue + investmentAmount)); 
0

Проблема заключается в ваш номер становится слишком большим, и Java переключается на экспоненциальном при печати значения.

Если ваша месячная процентная ставка введена как 4.25 (что означает 4,25%), вы должны преобразовать ее в правильное десятичное представление 0.0425, прежде чем использовать ее в своих расчетах, - вы должны разделить ее на 100. Если вы не используете, t, используемая процентная ставка будет намного больше, чем вы предполагали; в этом случае 425%.

Другими словами, изменение

double monthlyInterestRate = input.nextDouble(); 

в

double monthlyInterestRate = input.nextDouble()/100; 
0

Вы можете попробовать:

System.out.println("Accumulated value is: " + (futureInterestValue + investmentAmount)); 

или добавить переменную как double accumulatedValue=futureInterestValue + investmentAmount; , а затем System.out.println("Accumulated value is: " + accumulatedValue);

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