0

运行时,结果就像没有输入值一样。我希望有人或所有人可以审查代码和批评。

package practice_array_tables;

import javax.swing.*;

public class Practice_Array_Tables {
    public static void main(String[] args) {
     //Variables
        String Principal, Rate, Time;

        //Prompt user for input via JOptionPane.showInputDialog
        Principal = JOptionPane.showInputDialog(" Enter Principle Amount. ");

          //Enter Rate.
        Rate = JOptionPane.showInputDialog(" Enter Rate, i.e 0.10 ");

        //Enter Time
        Time = JOptionPane.showInputDialog(" Enter Time ");

        //Parse String to Int.
        int p = Integer.parseInt(Principal);
        int r = Integer.parseInt(Rate);
        int t = Integer.parseInt(Time);

        //Compute Compound Interest.\
       double CompoundInterest = p * Math.pow((1+r / 100), t );
       double c = CompoundInterest;

       //Print results to JOptionPane.showMessageDialog.
        JOptionPane.showMessageDialog(null, " your answer " + c);
    }
}
4

1 回答 1

3

你为什么要做一个双倍,然后将同一个双倍分配给一个新的双倍?我还认为你的复利公式是错误的。A=P(1+(r/n))^nt

此外,您将 Rate 解析为 int,有效地将其设为 0。您应该将其解析为 double。具体看这两行(不连续)

Rate = JOptionPane.showInputDialog(" Enter Rate, i.e 0.10 ");
int r = Integer.parseInt(Rate);

如果您查看 Double 类下的 java API,您会发现一个与 parseInt 非常相似的 parseDouble 方法。简单地做

double r = Double.parseDouble(Rate);

这会给你你所期望的;带小数的数字。我怀疑您的问题可能来自乘以 0。

于 2013-03-31T23:26:53.500 回答