//银行贷款按月还本复习的计算import java.util.*;
import java.awt.Color;
import java.awt.event.*;
import javax.swing.*;public class LoanJFrame extends JFrame implements ActionListener{ /**
*
*/
private static final long serialVersionUID = 1L;
/**
* @param args
*/
private JTextField text_money,text_rate,text_year; //贷款金额,利率,年限文本行;
private JSpinner spin_year,spin_month;
private JButton button;
private JTable table;
public LoanJFrame()
{
super("银行贷款按月还本付息的计算");
this.setBounds(300,240,740,400);
this.setBackground(Color.LIGHT_GRAY);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel panel=new JPanel();
this.getContentPane().add(panel,"North");
panel.add(new JLabel("贷款金额"));
text_money=new JTextField("100000",6);
panel.add(text_money);
panel.add(new JLabel("元 贷款利率"));
text_rate=new JTextField("0.05025",6);
panel.add(text_rate);
panel.add(new JLabel("%/月 贷款年限"));
text_year=new JTextField("5",3);
panel.add(text_year);
panel.add(new JLabel("年 起始年月"));
Calendar now =Calendar.getInstance(); //获得当前日期
int year=now.get(Calendar.YEAR);
int month=now.get(Calendar.MONTH)+1;
int nextmonth=month%12+1; //下月
if(nextmonth==1)
year++;
spin_year=new JSpinner();
spin_year.setValue(year);
panel.add(spin_year);
panel.add(new JLabel("年"));
spin_month=new JSpinner(new SpinnerNumberModel(nextmonth,1,12,1)); //数值模式初值为下月,范围是1-12,变化值为1.
panel.add(spin_month);
panel.add(new JLabel("月"));
button=new JButton("计算");
panel.add(button);
button.addActionListener(this);
actionPerformed(null); this.getContentPane().add(new JScrollPane(table));
this.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
String titles[]={"年月","本金余额(元)","月还本金(元)","月还利息(元)","月还本息(元)"};
int months=Integer.parseInt(text_year.getText())*12; //还款月数
Object datas[][]=new Object[months][]; //创建存储表格数据项的二维数组
int year=Integer.parseInt(""+spin_year.getValue()); //起始年份
int mon=Integer.parseInt(""+spin_month.getValue()); //起始月份
double leaving=Double.parseDouble(""+text_money.getText()); //本金余额
double pay=leaving/months; //月还本金
double rate =Double.parseDouble(""+text_rate.getText()); //贷款利率
for(int i=0;i<months;i++)
{
datas[i][0]=year+"年"+mon+"月"; datas[i][1]=String.format("%9.2f", leaving);
datas[i][2]=String.format("%9.2f", pay); //月还本金
datas[i][3]=String.format("%9.2f", leaving*rate*0.01); //月还利息
datas[i][4]=String.format("%9.2f", pay+leaving*rate*0.01); //月还本息
if(mon==12)
year++;
mon=mon%12+1;
leaving-=pay;
}
table=new JTable(datas,titles);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new LoanJFrame();
}}
Exception in thread "main" java.lang.NullPointerException
at LoanJFrame.actionPerformed(LoanJFrame.java:79)
at LoanJFrame.<init>(LoanJFrame.java:60)
at LoanJFrame.main(LoanJFrame.java:94)指针异常
import java.awt.Color;
import java.awt.event.*;
import javax.swing.*;public class LoanJFrame extends JFrame implements ActionListener{ /**
*
*/
private static final long serialVersionUID = 1L;
/**
* @param args
*/
private JTextField text_money,text_rate,text_year; //贷款金额,利率,年限文本行;
private JSpinner spin_year,spin_month;
private JButton button;
private JTable table;
public LoanJFrame()
{
super("银行贷款按月还本付息的计算");
this.setBounds(300,240,740,400);
this.setBackground(Color.LIGHT_GRAY);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel panel=new JPanel();
this.getContentPane().add(panel,"North");
panel.add(new JLabel("贷款金额"));
text_money=new JTextField("100000",6);
panel.add(text_money);
panel.add(new JLabel("元 贷款利率"));
text_rate=new JTextField("0.05025",6);
panel.add(text_rate);
panel.add(new JLabel("%/月 贷款年限"));
text_year=new JTextField("5",3);
panel.add(text_year);
panel.add(new JLabel("年 起始年月"));
Calendar now =Calendar.getInstance(); //获得当前日期
int year=now.get(Calendar.YEAR);
int month=now.get(Calendar.MONTH)+1;
int nextmonth=month%12+1; //下月
if(nextmonth==1)
year++;
spin_year=new JSpinner();
spin_year.setValue(year);
panel.add(spin_year);
panel.add(new JLabel("年"));
spin_month=new JSpinner(new SpinnerNumberModel(nextmonth,1,12,1)); //数值模式初值为下月,范围是1-12,变化值为1.
panel.add(spin_month);
panel.add(new JLabel("月"));
button=new JButton("计算");
panel.add(button);
button.addActionListener(this);
actionPerformed(null); this.getContentPane().add(new JScrollPane(table));
this.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
String titles[]={"年月","本金余额(元)","月还本金(元)","月还利息(元)","月还本息(元)"};
int months=Integer.parseInt(text_year.getText())*12; //还款月数
Object datas[][]=new Object[months][]; //创建存储表格数据项的二维数组
int year=Integer.parseInt(""+spin_year.getValue()); //起始年份
int mon=Integer.parseInt(""+spin_month.getValue()); //起始月份
double leaving=Double.parseDouble(""+text_money.getText()); //本金余额
double pay=leaving/months; //月还本金
double rate =Double.parseDouble(""+text_rate.getText()); //贷款利率
for(int i=0;i<months;i++)
{
datas[i][0]=year+"年"+mon+"月"; datas[i][1]=String.format("%9.2f", leaving);
datas[i][2]=String.format("%9.2f", pay); //月还本金
datas[i][3]=String.format("%9.2f", leaving*rate*0.01); //月还利息
datas[i][4]=String.format("%9.2f", pay+leaving*rate*0.01); //月还本息
if(mon==12)
year++;
mon=mon%12+1;
leaving-=pay;
}
table=new JTable(datas,titles);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new LoanJFrame();
}}
Exception in thread "main" java.lang.NullPointerException
at LoanJFrame.actionPerformed(LoanJFrame.java:79)
at LoanJFrame.<init>(LoanJFrame.java:60)
at LoanJFrame.main(LoanJFrame.java:94)指针异常
解决方案 »
- Swing插件一个皮肤的修改
- java如何读取shapefile
- 这段Java代码应该如何改正?
- 如何将含有汉字的String求出其所占字节长度??
- java语法问题
- 一个关于i++的小问题(小是小,逻辑性很强,反正是把我绕进去了-_-)
- 多线程的同步问题,欢迎指教。
- 关于JFileChooser的问题
- 2、请朋友们帮我看看这个程序的问题在那里??谢谢
- 如何保证 .properties 文件修改后的参数顺序与原来一样
- 北大acm 1011题,(java代码)老是超时求大神帮忙看下!!
- //请问总是打印rrrsss,当没有ArithmeticException捕捉的时候,就会打印vvvsss,难道两个异常有什么关系
Object datas[][] = new Object[months][5]; //创建存储表格数据项的二维数组