我有一个问题,输出应该是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);
}
}
答案 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);