用这个相对简单的问题困扰你们的道歉,但是在调用replaceAll(“\。”,“”)时我一直遇到空指针异常,我想知道为什么......毫无疑问,这对我来说很简单我只是没有得到。
IPAddress简介: 提到的第一个类将从IPAddressTester(后面提到)传递一个String值,它将作为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 Class
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();
}
}
再一次,我真诚的为此打扰你们所致,但我猜这个问题可能会有一个简单的一两句话答案(希望不会太过于侮辱他们;) ))。
答案 0 :(得分:2)
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("\\.","");
}
答案 1 :(得分:1)
您正在初始化
String tmpString
使用null ipString。在调用构造函数之前,IpString不会被设置,但是在调用构造函数之前,tmpString会被初始化,因为它位于类初始值设定项中。
在构造函数中初始化tmpString以解决问题。
答案 2 :(得分:0)
初始订单。
当您新建IPAddress时,IPAddress.ipString为空。
最初的过程!
1,IPAddress ipAdd;
2,ipString = NULL;
3,String tmpString = ipString.replaceAll(“\。”,“”); //抛出异常
4,IPAddress ipAdd = new IPaddress(testString);
5,ipString = “130.191.208.70”;