日期:2014-05-20  浏览次数:20953 次

为什么点击"查询"会出现空指针错误
package csdn;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import javax.swing.*;
public class WeekTest extends JFrame implements ActionListener{
JLabel  jl1 = new JLabel("输入年份:");
JTextField jtf1 = new JTextField();
JLabel  jl2 = new JLabel("输入月份:");
JTextField jtf2 = new JTextField();
JLabel  jl3 = new JLabel("输入日:");
JTextField jtf3 = new JTextField();
JButton jb1 = new JButton("查询");
JPanel panel = new JPanel(new GridLayout(1,9));
JPanel panel2 = new JPanel(); 
JDialog dialog = null;
JTextArea textarea = null;
DataOutputStream dos = null;
String strdate = null;
public WeekTest(){
panel.add(jl1);
panel.add(jtf1);
panel.add(jl2);
panel.add(jtf2);
panel.add(jl3);
panel.add(jtf3);
panel.add(jb1);
setTitle("查询日期对应星期几");
setBounds(300,400,600,90);
//add(panel);
panel2.add(panel);
this.add(panel2,BorderLayout.EAST);
this.setLayout(new GridLayout(1,7));
pack();
jtf1.addActionListener(this);
jtf2.addActionListener(this);
jtf3.addActionListener(this);
jb1.addActionListener(this);
setVisible(true);
}
public static void main(String[]args){
new WeekTest();
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==jb1){
if(e.getActionCommand().equals("查询")){
String stryear = jtf1.getText().trim();
String strmonth = jtf2.getText().trim();
String strday = jtf3.getText().trim();
strdate = stryear+"--"+strmonth+"--"+strday;
System.out.println("strdate"+strdate);
dialog = new JDialog(this,"是星期...");
textarea.setText(strdate);
textarea.setLineWrap(true);
textarea.setEditable(false);
dialog.add(textarea);
dialog.pack();
dialog.setResizable(false);
dialog.setBounds(400,400,300,350);
dialog.setVisible(true);
}
}
}
}

------解决方案--------------------
出错语句:

textarea.setText(strdate);

因为textarea对象未创建,因此会出现空指针异常
解决方法:

JTextArea textarea = null;

改为:

JTextArea textarea = new JTextArea();

------解决方案--------------------
空字符串直接转整形,就报这错。你应该 catch这个 Exception,然后打一个Message。
或者在转Int之前 判断一下这个字符串是不是整数。
------解决方案--------------------
引用:
stryear = field1.getText().trim();
strmonth = field2.getText().trim();
strday = field3.getText().trim();
System.out.println(stryear+"stryear");
if(stryear!=null&&strmonth!=nul……

Exception in thread "main" java.lang.NumberFormatException: For input string: ""
这句报错很明显的提示了,你想把一个空字符串转换为数字形式,你觉得可以么?
所以就报错了,在转换之前加一个非空判断就好了。