小编典典

如何避免NullPointerException?

java

我正在尝试通过从客户端向服务器发送密钥和随机数来认证用户。

我的代码未向我显示客户端的响应。执行下面的代码时,我得到了一个空指针异常。

import java.io.*;
import java.net.*;
import java.lang.*;

class Client

{
    public static void main(String args[]) throws IOException
    {

        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        System.out.println("enter the key value");
        int key=Integer.parseInt(br.readLine());
        double random=Math.random()*50;
        System.out.println(random);
        int response=key%((int)random);
        System.out.println(key);
        System.out.println("Authentication begins");
        Socket echoSocket = new Socket("localhost", 2000);
        FileOutputStream fout=null;
        DataOutputStream clientout=null;
        clientout.writeDouble(random);
        clientout.writeInt(key);
        clientout.writeInt(response);    
        fout.flush();
        System.out.println("client is"+response);
        echoSocket.close();

    }
}

import java.io.*;
import java.net.*;
import java.lang.*;

class Server
{
    public static void main(String args[]) throws IOException
    {
        int response2;
        double random2;
        int key2;
        FileInputStream fin=null;
        DataInputStream clientin=null;
        ServerSocket s= new ServerSocket(2000);
        Socket echoSocket=s.accept();
        random2=clientin.readDouble();
        key2=clientin.readInt();
        response2=clientin.readInt();
        response2=key2%((int)random2);
        System.out.println("server is"+response2);
        s.close();
        echoSocket.close();
    }
}

阅读 252

收藏
2020-11-30

共1个答案

小编典典

解决大多数问题的固定步骤NullPointerException

  1. 阅读堆栈跟踪以确定哪一行代码引发NPE
  2. 在该行代码处设置一个断点
  3. 使用调试器,在遇到断点时,确定该行中的对象引用是 null
  4. 弄清楚为什么引用该文件null(到目前为止,这是唯一实际的困难部分)
  5. 解决根本原因(也可能很困难)
2020-11-30