package Test;
public class RegexDemo {
public static void main(String[] args) {
checkS();
}
public static void checkS()
{
String s="015455645";
if(s.charAt(0)==0) /*首先这里一个错误,你的初衷应该是想打印从0开始,char类型和int类型比较,char会隐式转换成int '0'转换成int是48,而它的转换是根据ASCII码表 转换的。字符'0'在ASCII中十进制的值为48,所以这句改成if(s.charAt(0)=='0')比较合适*/
{
System.out.println("0 starts");
}
else if(s.length()>5&&s.length()<15)
{
char[] c=s.toCharArray();
for(int x=0;x<c.length;x++)
{
if(c[x]>'0'&&c[x]<'9')//这里和c[x]<0&&c[x]<9有什么区别 /*这里其实就是上面的问题,这属于完全不同类型的数值比较,系统会自动把低位的数值转换成高位的数值然后进行比较,c[x] >'0'这是两个字符进行比较而c[x]<0,是两个int类型的数值在比较*/
System.out.println("S:"+s);//想让这里打印一次该怎么办?/*而这里,你打印的是你上面的字符串,可能你想打印的是经过你筛选的字符,那么你可以把其中的s改成c[x]*/
}
}
//感觉你写这个程序严重脱离了自己的思路
else
{
System.out.println("error length");
}
}
} |