package SI;
import java.awt.*;
import java.awt.event.*;
import java.lang.*;
import java.math.*;
import java.math.BigDecimal;
import static oracle.jrockit.jfr.events.Bits.doubleValue;
import static oracle.jrockit.jfr.events.Bits.floatValue;
import static oracle.jrockit.jfr.events.Bits.intValue;
public class SI extends Frame implements ActionListener{
TextField ptf,rtf,ttf,sitf,atf,citf,atf1;
Button ab,sib,cib,ab1;
Label pl,rl,tl,sil,al,cil,al1;
SI(){
pl=new Label("Principal:");
pl.setBounds(15,50,50,20);
ptf=new TextField();
ptf.setBounds(150, 50, 150, 20);
rl=new Label("Rate:");
rl.setBounds(15,100,50,20);
rtf=new TextField();
rtf.setBounds(150, 100, 150, 20);
tl=new Label("Time:");
tl.setBounds(15,150,50,20);
ttf=new TextField();
ttf.setBounds(150, 150, 150, 20);
sil=new Label("Simple Interest:");
sil.setBounds(15,200,150,20);
sitf=new TextField();
sitf.setBounds(150, 200, 150, 20);
sitf.setEditable(false);
sib=new Button("Simple Interest");
sib.setBounds(120,400,100,50);
sib.addActionListener(this);
cil=new Label("Compound Interest:");
cil.setBounds(15,250,200,20);
citf=new TextField();
citf.setBounds(150, 250, 150, 20);
citf.setEditable(false);
cib=new Button("Compound Interest");
cib.setBounds(240,400,130,50);
cib.addActionListener(this);
al=new Label("Amount of SI:");
al.setBounds(15,300,200,20);
atf=new TextField();
atf.setBounds(150,300,150,20);
atf.setEditable(false);
ab=new Button("Amount of SI");
ab.setBounds(20,400,80,50);
ab.addActionListener(this);
al1=new Label("Amount of CI:");
al1.setBounds(300,300,200,20);
atf1=new TextField();
atf1.setBounds(390, 300, 150, 20);
atf1.setEditable(false);
ab1=new Button("Amount of CI");
ab1.setBounds(390,400,80,50);
ab1.addActionListener(this);
add(pl);
add(ptf);
add(rtf);
add(rl);
add(ttf);
add(tl);
add(sitf);
add(sil);
add(sib);
add(ab);
add(atf);
add(al);
add(ab1);
add(atf1);
add(al1);
add(cib);
add(citf);
add(cil);
setSize(600,600);
setLayout(null);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
String s1=ptf.getText();
String s2=rtf.getText();
String s3=ttf.getText();
BigDecimal p=new BigDecimal("s1");
BigDecimal r=new BigDecimal("s2");
BigDecimal t=new BigDecimal("s3");
BigDecimal si=new BigDecimal("0");
BigDecimal a1=new BigDecimal("0");
BigDecimal a11=new BigDecimal("0");
BigDecimal b=new BigDecimal("");
BigDecimal h=new BigDecimal("100");
BigDecimal c=new BigDecimal("");
BigDecimal i=new BigDecimal("1");
BigDecimal d=new BigDecimal("0");
BigDecimal j=new BigDecimal("0");
BigDecimal g=d.subtract(p);
if(e.getSource()==sib){
b=p.multiply(r).multiply(t).divide(h);
}else if(e.getSource()==cib){
c=i.add(r).divide(h);
j=c.pow(intValue(t));
d=p.multiply(j);
si=p.multiply(t).multiply(r).divide(h);
a1=p.add(d);
}else if(e.getSource()==ab){
si=p.multiply(t).multiply(r).divide(h);
a1=p.add(d);
}else if(e.getSource()==ab1){
c=i.add(r).divide(h);
j=c.pow(intValue(t));
d=p.multiply(j);
si=p.multiply(t).multiply(r).divide(h);
a1=p.add(d);
a11=d.subtract(p);
}
String sit=String.valueOf(si);
sitf.setText(String.valueOf(si));
String at=String.valueOf(a1);
atf.setText(at);
String at1=String.valueOf(a11);
atf1.setText(String.valueOf(a11));
String cit=String.valueOf(d);
citf.setText(String.valueOf(d));
}
public static void main(String[] args) {
// TODO code application logic here
new SI();
}
}
此小程序不起作用。当我单击按钮时,它将引发错误。我将所有double都更改为BigDecimal后,此错误开始。请帮帮我。我被困在这里好几天了。这是什么错误。我对BigDecimal不太了解。我是新来的。请帮帮我。为什么会引发错误?
答案 0 :(得分:1)
BigDecimal的构造函数不接受空字符串。
BigDecimal b=new BigDecimal(""); //error
BigDecimal c=new BigDecimal(""); //error
这些格式至少需要一个整数部分-请参阅源代码,它没有标记为可选。
来源:
答案 1 :(得分:0)
您必须传递变量,而不必将其称为String
,
您的代码,
BigDecimal p=new BigDecimal("s1");
BigDecimal r=new BigDecimal("s2");
BigDecimal t=new BigDecimal("s3");
应该是
BigDecimal p=new BigDecimal(s1);
BigDecimal r=new BigDecimal(s2);
BigDecimal t=new BigDecimal(s3);
也正如我们的朋友先前所建议的那样,请勿为BigDecimal
传递空值(“”),而将BigDecimal
常量用于零和一,
BigDecimal d=BigDecimal.ZERO;
BigDecimal j=BigDecimal.ZERO;
BigDecimal i=BigDecimal.ONE;