您的位置:首页 > 编程语言 > Java开发

java定义IP地址形式输入的规则

2012-02-10 10:53 337 查看
以下的源码来出自《JAVA核心编程I:基本知识(原书第7版)》

import java.text.ParseException;

/**
* A formatter for 4-byte IP addresses of the form a.b.c.d
*
*/
public class IPAddressFormatter extends DefaultFormatter {
@Override
public String valueToString(Object value) throws ParseException {
if (!(value instanceof byte[]))
throw new ParseException("Not a byte[]", 0);
byte[] a = (byte[]) value;
if (a.length != 4)
throw new ParseException("Length != 4", 0);
StringBuilder builder = new StringBuilder();
for (int i = 0; i < 4; i++) {
int b = a[i];
if (b < 0)
b += 256;
builder.append(String.valueOf(b));
if (i < 3)
builder.append(".");
}
return builder.toString();
}

@Override
public Object stringToValue(String text) throws ParseException {
StringTokenizer tokenizer = new StringTokenizer(text, ".") ;
byte[] a = new byte[4] ;
for(int i=0; i<4 ;i++){
int b = 0 ;
if(!tokenizer.hasMoreTokens())
throw new ParseException("Too few bytes", 0) ;
try{
b = Integer.parseInt(tokenizer.nextToken()) ;
}catch (NumberFormatException e){
throw new ParseException("Not an integer", 0) ;
}
if(b<0 || b>=256)
throw new ParseException("Byte out of range", 0) ;
a[i] = (byte) b ;
}
if(tokenizer.hasMoreTokens())
throw new ParseException("Too many bytes", 0 ) ;
return a ;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐