下面是我自己编的客户端程序和服务器程序,以及相关错误,请高人解答,谢谢!
服务器程序:
import java.io.*;
import java.net.*;
import java.util.*;
import java.awt.*;
import javax.swing.*;public class test extends JFrame{
private JTextArea jta=new JTextArea();

public static void main(String[] args){
new test();
}
public test(){
setLayout(new BorderLayout());
add(new JScrollPane(jta),BorderLayout.CENTER);

setTitle("Server");
setSize(500,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);

try{
ServerSocket serversocket=new ServerSocket(8000);
jta.append("Server started at"+new Date()+'\n');
int clientNo = 1;
Socket socket=serversocket.accept();

DataInputStream inputFromClient=new DataInputStream(socket.getInputStream());
DataOutputStream outputToClient=new DataOutputStream(socket.getOutputStream());

while(true){

double AnnualInterestRate=inputFromClient.readDouble();

int NumberOfYears=inputFromClient.readInt();

double LoanAmount=inputFromClient.readDouble();

double monthlyPayment=LoanAmount/NumberOfYears+AnnualInterestRate*LoanAmount/1200;

outputToClient.writeDouble(monthlyPayment);

jta.append("monthlyPayment:"+monthlyPayment+'\n');

}

}
catch(IOException ex){
System.err.println(ex);
}
}
}客户端程序:
import java.io.*;
import java.net.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;public class test1 extends JFrame{
private JTextField jtfRate=new JTextField(20);
private JTextField jtfYear=new JTextField(20);
private JTextField jtfAmount=new JTextField(20);
private JTextArea jta=new JTextArea();
private JButton jbt=new JButton("Submit");

private DataOutputStream toServer;
private DataInputStream fromServer;

public static void main(String[] args){
new test1();
}

public test1(){
JPanel p1=new JPanel();
p1.setLayout(new GridLayout(3,1));
p1.add(new JLabel("AnnualInterestRate"));
p1.add(new JLabel("NumberOfYears"));
p1.add(new JLabel("LoanAmount"));

JPanel p2=new JPanel();
p2.setLayout(new GridLayout(3,1));
p2.add(jtfRate);
p2.add(jtfYear);
p2.add(jtfAmount);

JPanel p3=new JPanel(new BorderLayout());
p3.add(p1,BorderLayout.WEST);
p3.add(p2,BorderLayout.CENTER);

add(p3,BorderLayout.WEST);
add(jbt,BorderLayout.CENTER);
add(new JScrollPane(jta),BorderLayout.SOUTH);

jbt.addActionListener(new BottonListener());

setTitle("test1");
setSize(500,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);

try{
Socket socket=new Socket("125.216.248.148",8000);

fromServer=new DataInputStream(socket.getInputStream());

toServer=new DataOutputStream(socket.getOutputStream());
}
catch(IOException ex){
jta.append(ex.toString()+'\n');
}

}

private class BottonListener implements ActionListener{
public void actionPerformed(ActionEvent e){
try{
double AnnualInterestRate=Double.parseDouble(jtfRate.getText().trim());
int NumberOfYears=Integer.parseInt(jtfYear.getText().trim());
double LoanAmount=Double.parseDouble(jtfAmount.getText().trim());
toServer.writeDouble(AnnualInterestRate);
toServer.writeInt(NumberOfYears);
toServer.writeDouble(LoanAmount);
toServer.flush();
double monthlyPayment=fromServer.readDouble();

jta.append("monthlyPayment:"+monthlyPayment+'\n');
}
catch(IOException ex){
System.err.println(ex);
}
}
}
}错误:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at test1$BottonListener.actionPerformed(test1.java:68)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)