当前位置: 首页 > 面试题库 >

如何避免NullPointerException?

况博容
2023-03-14
问题内容

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

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

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();
    }
}

问题答案:

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

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


 类似资料:
  • 问题内容: 我有两个简单的Java代码。第一个将恒定功率定义为power = a.pow(b); 第二个将恒定功率定义为power = BigInteger.ONE.shiftLeft(b) 在命令行中设置内存标志- Xmx1024m,第一个代码可以正常工作,但是第二个代码却出现错误:java.lang.OutOfMemoryError:Java堆空间 我的问题:我应该在第二个代码中更改什么以避免

  • 问题内容: 我有一个用于将文本添加到现有.doc文件中的代码,它将通过使用apache POI将其另存为另一个名称。 以下是到目前为止我尝试过的代码 以下是我得到的 我已经添加了与此对应的所有jar文件,但仍然找不到解决方案。我对apache poi是陌生的,所以请帮我提供一些解释和示例。谢谢 问题答案: 从我对问题的评论中复制: 看起来您需要Apache POI发行版中的poi-ooxml-sc

  • 问题内容: 要避免很多。 有没有好的替代方法? 例如: 当不知道对象是否存在时,可以避免使用。 问题答案: 在我看来,这似乎是一个相当普遍的问题,初级和中级开发人员往往会在某个时候遇到这些问题:他们要么不知道,要么不信任他们所参与的合同,并且防御性地检查了null。另外,在编写自己的代码时,他们倾向于依靠返回空值来表示某些内容,因此要求调用者检查空值。 换句话说,在两种情况下会出现空检查: 如果为

  • 问题内容: 我有几个较旧的应用程序,它们在E_NOTICE错误级别上运行时会抛出很多“ xyz未定义”和“未定义偏移”消息,因为没有使用和明确检查变量的存在。 我正在考虑通过它们使它们与E_NOTICE兼容,因为有关丢失变量或偏移量的通知可能会节省生命,可能会获得一些较小的性能改进,并且总体而言,这是一种更清洁的方法。 但是,我不喜欢什么造成数百 和S ^确实给我的代码。它变得肿,可读性降低,而没

  • 问题内容: 我可以在不生成编译的.pyc文件的情况下运行python解释器吗? 问题答案: 来自“ Python 2.6的新增功能- 解释器更改” : 现在,可以通过向Python解释器提供-B开关,或者通过在运行解释器之前设置 PYTHONDONTWRITEBYTECODE环境变量来阻止Python编写.pyc或.pyo文件。此设置可作为Python程序的 变量使用,并且Python代码可以更改

  • Lodash castArray函数没有任何特殊之处。有没有什么方法可以在没有任何外部库的情况下,利用最新的语言功能解决这个问题,但时间很短? 如果您不熟悉该任务: 有没有办法在没有类型检查的情况下做到这一点?请注意,我寻找最短的等效物ES6。