Nullpointerexception 使用PrintWriter时出现空指针异常
我有下面显示的内部类。这是针对客户机/服务器的,我在PrintWriter的“println”处遇到了nullpointer异常。我尽了我所能来解决这个问题,但没有成功。任何人都可以给我一个建议或是我该做什么的想法。谢谢大家 下面是完整的类代码:Nullpointerexception 使用PrintWriter时出现空指针异常,nullpointerexception,printwriter,Nullpointerexception,Printwriter,我有下面显示的内部类。这是针对客户机/服务器的,我在PrintWriter的“println”处遇到了nullpointer异常。我尽了我所能来解决这个问题,但没有成功。任何人都可以给我一个建议或是我该做什么的想法。谢谢大家 下面是完整的类代码: public class ChatClient extends JFrame{ private JTextField textToSend; private Socket socket; private PrintWriter
public class ChatClient extends JFrame{
private JTextField textToSend;
private Socket socket;
private PrintWriter writer
private String name;
private JTextArea receivedText;
private Scanner reader;
public ChatCliente(String name){
super("Chat: "+ name);
this.name = name;
Font font = new Font("Serif", Font.PLAIN, 20);
textToSend = new JTextField();
textToSend.setFont(font);
JButton btn = new JButton("Send");
btn.setFont(font);
btn.addActionListener(new Listener());
Container content = new JPanel();
content.setLayout(new BorderLayout());
content.add(BorderLayout.CENTER, textToSend);
content.add(BorderLayout.EAST, btn);
receivedText = new JTextArea();
receivedText.setFont(font);
JScrollPane scroll = new JScrollPane(receivedText);
getContentPane().add(BorderLayout.CENTER, scroll);
getContentPane().add(BorderLayout.SOUTH, content);
configureNetwork();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500,500);
setVisible(true);
}
private void configureNetwork(){
try{
socket = new Socket("127.0.0.1",5000);
writer = new PrintWriter(socket.getOutputStream());
reader = new Scanner(socket.getInputStream());
new Thread(new ServerThread()).start();
}catch (Exception e){}
}
private class Listener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
try{
String s = name;
String t = textToSend.getText();
System.out.println(name+" : "+ textToSend.getText());
writer.println(s+" : "+t);
writer.flush();
textToSend.setText("");
textToSend.requestFocus();
}catch(Exception ex){
ex.printStackTrace();
}
}
}
private class ServerThread implements Runnable{
@Override
public void run() {
String text;
try{
while((text = reader.nextLine()) != null){
receivedText.append(text+"\n");
}
}catch(Exception e){}
}
}
}
未声明“name” 也许你的意思是:
String s = "name";
只是发生在我身上的一些愚蠢的事情:不要在文件名中插入“/”,否则它当然会查找可能不存在的额外文件夹
int number = 1, total = 126;
String path = "some/path/found " + number + "/" + total;
PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(path, true)));
你的writer对象为null,我们无法告诉你为什么,因为这里没有定义它,请向我们展示更多的代码。你应该向我们展示初始化writer字段的位置,它是一个内部类,name是在上层类中定义的,如果name没有定义,它将根本无法编译。这是有道理的。都是有定义的。所有这些都是正确的和主动的。