Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 双倍+;双=字符串?_Java_Java.util.scanner - Fatal编程技术网

Java 双倍+;双=字符串?

Java 双倍+;双=字符串?,java,java.util.scanner,Java,Java.util.scanner,我有一个问题,输出应该是双精度的,但它是字符串 我试图添加两个双值,但它是作为字符串提供的。我正在使用eclipse。目前该程序正在编译和运行。如果有人有时间,我会很感激的。干杯,伙计们。这是源代码 import java.util.Scanner; public class FutureInvestment { public static void main(String[] args) { Scanner input = new Scanner(Syst

我有一个问题,输出应该是双精度的,但它是字符串 我试图添加两个双值,但它是作为字符串提供的。我正在使用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);


    }

}

缺少一些方括号,因此语句从左到右执行,从而在字符串后面追加double。您将需要以下内容:

System.out.println(“累计值为:”+(未来利息价值+ 投资额);


缺少一些方括号,因此语句从左到右执行,从而在字符串后面追加double。您将需要以下内容:

System.out.println(“累计值为:”+(未来利息价值+ 投资额);

试试这个

您得到的字符串是连接的结果,因为连接到字符串的任何内容都将转换为字符串。因此,您需要像上面显示的那样提前完成值,或者需要括号

试试这个


您得到的字符串是连接的结果,因为连接到字符串的任何内容都将转换为字符串。因此,您需要提前完成上述值,或者需要括号。

我认为将其更改为该值将有效:

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

我认为把它改成这样会有效:

    double futureInterestValue = investmentAmount * ( Math.pow((1 + monthlyInterestRate / 100), numberOfYears * 12));
    System.out.println("Accumulated value is: " + (futureInterestValue  + investmentAmount));
在第一个+之后,Java将第一个字符串与第一个double连接起来,从而生成一个字符串。然后它对第二个double执行另一个连接。在生成字符串之前,需要先计算结果


在第一个+之后,Java将第一个字符串与第一个double连接起来,从而生成一个字符串。然后它对第二个double执行另一个连接。您需要先计算结果,然后再从中生成字符串。

因为您在println中执行此操作,所以它正在执行字符串连接。如果要将double添加到一起,则需要使用()对它们进行分组

试一试


因为您在println中执行它,所以它执行字符串连接。如果要将double添加到一起,则需要使用()对它们进行分组

试一试


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

如果您的月利率输入为4.25(即4.25%),您必须将其转换为正确的十进制表示形式0.0425,然后才能在计算中使用它-您必须将其除以100。如果你不这样做,所使用的利率将远远高于你的预期;在这种情况下为425%

换句话说,改变

double monthlyInterestRate = input.nextDouble(); 


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

如果您的月利率输入为4.25(即4.25%),您必须将其转换为正确的十进制表示形式0.0425,然后才能在计算中使用它-您必须将其除以100。如果你不这样做,所使用的利率将远远高于你的预期;在这种情况下为425%

换句话说,改变

double monthlyInterestRate = input.nextDouble(); 


当两个运算符可以在一行代码中求值时,它们的优先级是固定的。虽然许多人已经解释过这个例子,

当两个运算符可以在一行代码中求值时,它们以固定的优先级进行求值。虽然许多人已经解释了这个示例,但您可以尝试:

System.out.println("Accumulated value is: " + (futureInterestValue + investmentAmount));
或者添加一个变量,如
double累加值=未来利息价值+投资金额
然后
System.out.println(“累计值为:”+累计值)

您可以尝试:

System.out.println("Accumulated value is: " + (futureInterestValue + investmentAmount));
或者添加一个变量,如
double累加值=未来利息价值+投资金额

然后
System.out.println(“累计值为:”+累计值)

您需要格式化输出。您可以使用或尝试以下功能:

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

您需要格式化输出。您可以使用或尝试以下功能:

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

这里是我得到的输出输入投资金额:1000输入月利率:4.25输入年数:1累计值是:4.384414858452464E111000.0,预期结果是累计值是1043.34我想我的答案可以帮助你这里是我得到的输出输入投资金额:1000输入月利率:4.25输入年数:1累计值是:4.384414858452464E111000.0预期结果是累计值是1043.34我想我的答案可以帮助你我担心它不起作用我有以下输出==>累计值是:4.384414868452464E11我认为你的计算是错误的,你需要先将利息除以100,我已经更新了我的代码我恐怕它不起作用了我有以下输出==>累积值是:4.384414868452464E11我想你的计算是错误的,你需要先除以利息100,我已经更新了我的代码相同的输出:累积值是:4.384414868452464E11如果你是指数字中的“E”,它是一个双符号而不是字符串相同的输出:累计值为:4.384414868452464E11如果您指的是数字中的“E”,则它是一个双符号而不是字符串