在检查IP的时候,四位十进制的数,每段必须在规定的范围内,而且还必须是数字, 
但是我的程序只能检测到必须写四位十进制的数,能判断第一个十进制的合法性,其他的就不行了,那位好心的人可以帮我看下呢,源代码如下:(接受IP的是个对话框,可以自己写拉)] 
public class nrm_util(){ 
static void warn(Component parent, String message) { 
JOptionPane.showMessageDialog(parent, message, "Warning", JOptionPane.WARNING_MESSAGE); 


// 判断输入是否是指定的字符 
public boolean isDigit(String str) { 
String number = "0123456789"; 
for (int i = 0; i < str.length(); i++) { 
if (number.indexOf(str.charAt(i)) == -1) { // nrm_util.warn(this,"Please 
// enter the defined 
// letters:0123456789."); 
return false; 


return true; 
} // 判断IP的合法性 
public boolean checkIp() { 
String hostEntered = hostField.getText().trim(); 
if (hostEntered.length() == 0) { 
nrm_util.warn(this, "Please enter hostAddress!"); 
return false; 
} else { 
host = hostEntered; 
StringTokenizer fenxi = new StringTokenizer(host, "."); 
int num = fenxi.countTokens(); 
if (num == 4) { 
while (fenxi.hasMoreTokens()) { 
if (fenxi.countTokens() == 4) { 
String str = fenxi.nextToken(); 
if (isDigit(str)) { int number = Integer.parseInt(str); 
if (number >= 1 && number < 255) 
return true; 
else { 
nrm_util.warn(this, "Ip is between 1 and 255"); 
return false; 


} else if (fenxi.countTokens() == 3) { String str = fenxi.nextToken(); 
if (isDigit(str)) { int number = Integer.parseInt(str); 
if (number >= 1 && number <= 255) 
return true; 
else { 
nrm_util.warn(this, "Ip is between 1 and 255"); 
return false; 


} else if (fenxi.countTokens() == 2) { 
String str = fenxi.nextToken(); 
if (isDigit(str)) { int number = Integer.parseInt(str); 
if (number >= 1 && number <= 255) 
return true; 
else { 
nrm_util.warn(this, "Ip is between 1 and 255"); 
return false; 


} else if (fenxi.countTokens() == 1) { 
String str = fenxi.nextToken(); 
if (isDigit(str)) { int number = Integer.parseInt(str); 
if (number >= 1 && number < 255) 
return true; 
else { 
nrm_util.warn(this, "Ip is between 1 and 255"); 
return false; 




} else { 
nrm_util.warn(this, "The hostAddress:000.000.000.000"); 
return false; 


return true;