在检查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;
}
但是我的程序只能检测到必须写四位十进制的数,能判断第一个十进制的合法性,其他的就不行了,那位好心的人可以帮我看下呢,源代码如下:(接受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;
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货