运行时,结果就像没有输入值一样。 我希望有人或所有人都可以审查代码和批评。
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);
}
}
答案 0 :(得分:3)
为什么要制作一个double,然后将同一个double分配给一个新的double? 我也认为你的复利的公式是错误的。 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而出现的。
答案 1 :(得分:1)
int r = Integer.parseInt(Rate);
这就是诀窍 速率是双倍数量,当你解析它时,它返回0,因为它小于1。