Java 复利公式不起作用,在主方法和第二方法中输出奇怪的数字(没有给我正确的答案)

Java 复利公式不起作用,在主方法和第二方法中输出奇怪的数字(没有给我正确的答案),java,methods,Java,Methods,是的,我以前问过同样代码的问题,但更多的问题出现了,我似乎无法解决,开始复利公式是打印出奇怪的代码数。还有行系统.out.println(复合);在main中,该方法不起作用,因为“无法将复合解析为变量错误”),所以我无法打印它 import java.io.*; class cexample { public static double squared(double x){ return x*x; } public static void main

是的,我以前问过同样代码的问题,但更多的问题出现了,我似乎无法解决,开始复利公式是打印出奇怪的代码数。还有行系统.out.println(复合);在main中,该方法不起作用,因为“无法将复合解析为变量错误”),所以我无法打印它

import java.io.*;

class cexample {
    public static double squared(double x){
        return x*x;
    } 

    public static void main(String[] args)   throws IOException {
        System.out.println(balance(0.0, 0.0,1.0));
        System.out.println(balance);
    }

    static public double balance(double principal, double rate, double years) throws IOException{
        double amount = 0;
        String input;
        String input2;
        years = 1;
        BufferedReader myInput = new BufferedReader (new InputStreamReader (System.in));
        System.out.print("How much would you like to take out? ");
        input = myInput.readLine ();
        principal = Double.parseDouble (input);        
        System.out.print("Enter the interest rate: ");
        input2 = myInput.readLine ();
        rate = Double.parseDouble (input2);
        System.out.println("Now, enter the amount of years (1-10)");
        input = myInput.readLine ();
        years = Double.parseDouble (input);  
        for (int i = 0; i < years; i++) {
            // equation, M = P *( 1+ rate) * years^2
            amount = principal * (1 + rate) *( squared(years));
            //amount += principal;
        }
        System.out.println("The amount is " + amount);
        return amount; //- principal;
    }
}
import java.io.*;
类cexample{
公共静态双平方(双x){
返回x*x;
} 
公共静态void main(字符串[]args)引发IOException{
系统输出println(余额(0.0,0.0,1.0));
系统输出打印项次(余额);
}
静态公共双余额(双本金、双利率、双年)例外{
双倍金额=0;
字符串输入;
字符串输入2;
年=1;
BufferedReader myInput=新的BufferedReader(新的InputStreamReader(System.in));
System.out.print(“您想取出多少?”);
input=myInput.readLine();
principal=Double.parseDouble(输入);
系统输出打印(“输入利率:”);
input2=myInput.readLine();
速率=Double.parseDouble(输入2);
System.out.println(“现在,输入年数(1-10)”;
input=myInput.readLine();
年份=Double.parseDouble(输入);
对于(int i=0;i
复利的公式是

principal * (1+(rate/compounding periods) ^ (years / compounding periods)
在您的情况下,复利期为1

另一种计算方法是

for(# of years)
  principal *= 1+rate

你在做这两件事,并且还要计算年数的平方,尽管我不知道你是从哪里得到这个想法的。

这一行给你带来了问题,因为平衡是一种方法。回去重新阅读。看起来你只是复制了我给你的代码的一部分,而没有阅读或理解它。你需要确保你真的被复制了做你认为你在做的事


你总是得到0作为结果(正如我在对上一个问题的评论中所解释的),因为你每年都要通过1,而你的
for
循环从1开始,所以你从来没有实际计算过任何东西。

我不是一个真正的java专家,但我会使用数学函数,这应该可以完成以下工作:

import java.lang.Math;

P * Math.pow((1 + r), (years/period))

我刚刚添加了代码,上传时出现了一些错误,请不要再批评我了。你想不想至少包括你之前帖子的链接,或者,更好的是,在这里发布你的相关部分?而且,“奇怪的数字”还不够描述性。引用一部电影:“帮助我们帮助你”“奇怪的数字,我的意思是它没有给我正确的答案,还有一个链接:你的公式似乎错了。还有,到底是什么
System.out.println(balance)?它为你编译过吗?您没有名为
余额的变量。我想我的公式来源不正确,谢谢您的回答。我可以写出本金*(1+利率)^(年/复利期)并用1重新计算复利期吗?如果利率是年利率,而复利期不是年利率,您还应该按复合期间设置速率。看见还要注意,Java中的
^
不是指数。使用
Math.pow()
。很好,我走得太快了,错过了费率划分。至于Math.Pow,我更喜欢使用伪代码,而不是为他做所有的工作。