double + double = String?

时间:2012-02-26 15:54:24

标签: java java.util.scanner

我有一个问题,输出应该是double,但它是字符串 我试图添加两个double值,但它将它作为一个字符串。我正在使用eclipse。目前该程序正在编译和运行。如果有人有一刻,我会很感激。欢呼各位。这是源代码。

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);


    }

}

9 个答案:

答案 0 :(得分:2)

由于你是在println中进行的,所以它正在进行字符串连接。如果要将double加在一起,则需要使用()。

对它们进行分组

尝试

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

答案 1 :(得分: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);

答案 2 :(得分:1)

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

试试这个。

您正在获取串联的结果,因为连接到字符串的任何内容都会转换为字符串。因此,您需要事先完成上面显示的值,或者需要括号。

答案 3 :(得分:1)

我认为改变它会起作用:

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

答案 4 :(得分:0)

你缺少一些括号,所以你的语句从左到右执行,因此将double加到字符串中。你需要这样的东西:

  

System.out.println(“累计值为:”+(futureInterestValue +   investmentAmount));

答案 5 :(得分:0)

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

在第一个+之后,Java将第一个字符串与第一个字符串连接起来,从而生成一个字符串。然后它与第二个双重进行另一个连接。您需要先计算结果,然后才能生成一个字符串。

答案 6 :(得分:0)

问题是你的数字太大了,Java在打印时会切换到科学记数法。

如果您的月利率输入为4.25(意味着4.25%),则必须在计算中使用它之前将其转换为正确的十进制表示0.0425 - 您必须将其除以100.如果不是,使用的利率将远大于您的预期;在这种情况下425%。

换句话说,改变

double monthlyInterestRate = input.nextDouble(); 

double monthlyInterestRate = input.nextDouble()/100; 

答案 7 :(得分:0)

如果可以在一行代码中评估两个运算符,则它们具有固定的优先级。虽然许多人已经解释了这个例子,you might want to review all of the precedence rules.

答案 8 :(得分:0)

您可以尝试:

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

或添加double accumulatedValue=futureInterestValue + investmentAmount;之类的变量 然后System.out.println("Accumulated value is: " + accumulatedValue);