为什么我用String类中的split(String regex)方法切割字符串为字符数组,数组里却没内容?(无法遍历)
publicclassDemo6{publicstaticvoidmain(String[]args)throwsException{BufferedReaderbr=n...
public class Demo6 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("输入IP");
String ip=br.readLine();
String[] a=ip.split(".");
for(int i=0;i<a.length;i++){
System.out.println(a[i]);
} 展开
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("输入IP");
String ip=br.readLine();
String[] a=ip.split(".");
for(int i=0;i<a.length;i++){
System.out.println(a[i]);
} 展开
5个回答
展开全部
改为:String[] a=ip.split("\\.");
split参数需要一个用来构造正则表达式的字符串。而.(点号)是正则的元字符之一,你要想用.分割就得把.进行转义好让正则表达式知道你是要找一个.(点号实体),你明白吗?
split参数需要一个用来构造正则表达式的字符串。而.(点号)是正则的元字符之一,你要想用.分割就得把.进行转义好让正则表达式知道你是要找一个.(点号实体),你明白吗?
追问
请问,那我接下来想判断IP是否合法,其中有一个是IP地址中不含有除. 0-9这11个字符以外的字符,我这么写哪里错了,该怎么改?
class Tool{
public static boolean isIp(String ip){
for(int i=0;i<ip.length();i++){
for(int j=0;j<=9;j++){
if(ip.charAt(i)!='j'&&ip.charAt(i)!='.'){
return false;
}
}
}
return true;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
String[] a=ip.split(".");
.在正则总表示任意字符,有特殊意义,应该转义下:
String[] a=ip.split("\\.");
.在正则总表示任意字符,有特殊意义,应该转义下:
String[] a=ip.split("\\.");
追问
请问,那我接下来想判断IP是否合法,其中有一个是IP地址中不含有除. 0-9这11个字符以外的字符,我这么写哪里错了,该怎么改?
class Tool{
public static boolean isIp(String ip){
for(int i=0;i<ip.length();i++){
for(int j=0;j<=9;j++){
if(ip.charAt(i)!='j'&&ip.charAt(i)!='.'){
return false;
}
}
}
return true;
}
}
追答
你这个逻辑上有一定的问题
按照你的思路应该这样写,遍历给出的ip字符串,如果任意位是0-9或者.就是合法的,如果不是,那么就是非法的。
你的代码ip.charAt(i)!='j'这句是使用字符跟'j'这个字符比,不是跟0-9比,是错误的。
所以应该改为,对字符串遍历,如果发现是0-9或者.就认为这位是合法的,往下走,如果不是0-9或者.就直接认为整个ip串都是不合法的,代码如下:
class Tool {
public static boolean isIp(String ip) {
for (int i = 0; i < ip.length(); i++) {
//假设不是合法的字符
boolean goodChar = false;
for (int j = 0; j <= 9; j++) {
//如果该字符在0-9或者.就认为是合法的,那么再判断下一个字符
if (Character.digit(ip.charAt(i), 10) == j || ip.charAt(i) == '.') {
goodChar = true;
break;
}
}
//如果该字符是非法,那么整个ip串被认为是非法
if(goodChar != true)
return false;
}
return true;
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
String[] a=ip.split("\\.");
点需要转义。。否则解析不了
点需要转义。。否则解析不了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-04-09
展开全部
要有转义字符。好像是“\”。你试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
呃,一二楼说出来了,
追问
请问,那我接下来想判断IP是否合法,其中有一个是IP地址中不含有除. 0-9这11个字符以外的字符,我这么写哪里错了,该怎么改?
class Tool{
public static boolean isIp(String ip){
for(int i=0;i<ip.length();i++){
for(int j=0;j<=9;j++){
if(ip.charAt(i)!='j'&&ip.charAt(i)!='.'){
return false;
}
}
}
return true;
}
}
追答
if(ip.charAt(i)=='j'||ip.charAt(i)=='.'){
return return;
}
或者在你的if里面加个else{return false;}
你这样把return true;放到循坏的外边,他永远反回的都是true,你说是不,不管你循坏是不是false,你最后返回的永远是false.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询