黑马程序员技术交流社区

标题: 求该错误 [打印本页]

作者: pthuakai    时间: 2013-5-4 09:38
标题: 求该错误
package Test;
public class RegexDemo {
        public static void main(String[] args) {
                checkS();
        }
        public static void checkS()
        {
                String s="015455645";
                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有什么区别
                                        System.out.println("S:"+s);//想让这里打印一次该怎么办?
                        }
                       
                }
                else
                {
                        System.out.println("error length");
                }
               
        }
}

作者: 吴传淦    时间: 2013-5-4 09:57
修改了下不知道满意不。
public class RegexDemo {
    public static void main(String[] args) {
            checkS();
    }
    public static void checkS()
    {
            String s="15455645";
            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有什么区别
                                    System.out.print(c[x]);//想让这里打印一次该怎么办?
                    }
                    
            }
            else
            {
                    System.out.println("error length");
            }
            
    }
}
作者: 郑雪    时间: 2013-5-4 09:57
   if(c[x]>'0'&&c[x]<'9')这句的意思是:如过字符c[x]是在0到9之间的数字,
而c[x]>0&&c[x]<9意思是:字符c[x]在ASCII码表中所对应的数值,而这个数字并不是在0到9之间的数字,应该是48到57之间。
作者: hou604720966    时间: 2013-5-4 09:59
if(c[x]>'0'&&c[x]<'9')//这里和c[x]<0&&c[x]<9有什么区别    前面的判断是‘0’到‘9’之间的字符  而注释掉的是判断c【x】的Ascii码值

//想让这里打印一次该怎么办?
在这个if(c[x]>'0'&&c[x]<'9')  判断中,你可以在上面定义一个boolean变量,当做一个开关来判断,比如:
char[] c=s.toCharArray();
                  boolean judge = false;
                  for(int x=0;x<c.length;x++)
                  {
                          if(c[x]>'0'&&c[x]<'9' && ! judge){//这里和有什么区别
                                  System.out.println("S:"+s);//想让这里打印一次该怎么办?
                                  judge = true;
                          }
                  }
                  
作者: 胡帅冰    时间: 2013-5-4 10:26
  1. /**
  2. *
  3. */
  4. package exercise;

  5. /**
  6. * @author bin
  7. *
  8. */
  9. public class RegexDemo {
  10.     public static void main(String[] args) {
  11.             checkS();
  12.     }
  13.     public static void checkS()
  14.     {
  15.             String s="015455645";
  16.             if(s.charAt(0)=='0')
  17.             {
  18.                     System.out.println("0 starts");
  19.             }
  20.             else if(s.length()>5&&s.length()<15)
  21.             {
  22.                     char[] c=s.toCharArray();
  23.                     for(int x=0;x<c.length;x++)
  24.                     {
  25.                             if(c[x]>'0'&&c[x]<'9')//这里和c[x]<0&&c[x]<9有什么区别
  26.                 //区别大了。c[x]>'0'&&c[x]<'9'是进行字符的比较,c[x]中的字符必须是'0'到'9'的字符才行的。
  27.                 //  c[x]>0&&c[x]<9 是将c[x]中的字符的ASCⅡ与数字 0 9 比较。
  28.                             {
  29.                                     System.out.println("S:"+c[x]);//想让这里打印一次该怎么办?
  30.                             }
  31.                     }
  32.                     
  33.             }
  34.             else
  35.             {
  36.                     System.out.println("error length");
  37.             }
  38.             
  39.     }
  40. }
复制代码

作者: xuluheng718    时间: 2013-5-4 15:58
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");
                }
               
        }
}
作者: 花开花落总相似    时间: 2013-5-4 20:01
public class RegexDemo {
        public static void main(String[] args) {
                checkS();
        }
        public static void checkS()
        {
                String s="015455645";
                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有什么区别       至于这里   一个是0,9的比较 另个一个是整数类型的比较 你说区别呢
                                {
                                        System.out.print(c[x]);/*想让这里打印一次该怎么办?前面的换行给去掉 里面的改成 c[x] 但是这个也是打印 好多次的 只不过看起来 一串
                                           只不过我觉得你的原意应该是打印出来满足条件的 字符 所以 我觉得还是把满足条件的都打出来的好。
                                                    //break;       还有这个 虽然这个是打印一次的  但是这个就直接跳出循环了  有改你的初衷 */
                                                        }
                        }
                        
                }
                else
                {
                        System.out.println("error length");
                }
               
        }
}
   呵呵 改的不好还请见谅
作者: 黄玉昆    时间: 2013-5-4 22:42
如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2