很抱歉打扰您这个相对简单的问题,但是我在调用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("\\.","");
}