很抱歉打扰您这个相对简单的问题,但是我在调​​用replaceAll(“ \。”,“”)时一直遇到空指针异常,我想知道为什么...毫无疑问,我只是简单地没有得到。

IPAddress的摘要:
所提到的第一个类将从IPAddressTester(后述)传递一个字符串值,该值将作为ipString存储在IPAddress类中。字符串本身的格式为###。###。###。##。我的最终目标是剥离该字符串的句点,合并所得的标记,并转换为整数以备后用(请参见hashCode方法)。显然,此类并不完整,可能还会有其他问题/问题,但是我目前仅关注于replaceAll导致的空指针错误。

IPAddressTest的摘要:
顾名思义,它测试IPAddress。基本上是一个“驱动程序”。

package ipResolver;

import java.util.Arrays;
import java.util.StringTokenizer;
import java.util.Scanner;

public class IPAddress implements Comparable<IPAddress>{

     private String ipString;

     private int ipInt;
     private int ipHash;


     //Constructor
     public IPAddress(String ip){
         ipString = ip;
     }


     //--------------------------------Begin Error Region
     String tmpString = ipString.replaceAll("\\.","");
     //--------------------------------End Error Region

     public int hashCode(int ipToBeHashed){
         return ipHash;
     }

     public boolean equals(Object o){
         return ipString.equals(String.valueOf(o));
     }

     public int compareTo(IPAddress IP){
         return ipInt - IP.ipInt;
     }

     public String toString()
     {
         return ipString;
     }

     public void gettmpString(){
         System.out.println(tmpString);
     }
}


IPAddressTest类别

package test_code;
import java.util.Arrays;

import ipResolver.IPAddress;

public class IPAddressTest {
    public static void main(String args[]){
        String testString = "130.191.208.70";
        IPAddress ipAdd = new IPAddress(testString);
        System.out.println(ipAdd);

        ipAdd.gettmpString();

    }
}


再次,我真诚的道歉要打扰大家,但是我想这个问题可能只有一个或两个句子的简单答案(希望不会太侮辱;-)。

最佳答案

String tmpString = ipString.replaceAll("\\.","");


在为ipString实际分配了一个值之后,该代码应该在构造函数中(因为否则它仍然为null)。

public class IPAddress implements Comparable<IPAddress>{

     private final String ipString;

     private final String tmpString;

     //Constructor
     public IPAddress(String ip){
         ipString = ip;
         tmpString = ipString.replaceAll("\\.","");
     }

}


或者,也许您根本不想存储tmpString并在使用时进行计算:

public String getTmpString(){
    return ipString.replaceAll("\\.","");
}

08-08 02:02