public class Test1 {
 public static void main(String[] args) {
  String str="1234+23545+244252+3435";
  for(int i=0;i<str.length();i++){
   if(str.charAt(i)>'0'||str.charAt(i)<'9'){
    System.out.print(str.charAt(i)+"");
   }  
  }
}
为什么还有运算符输出哦?  

解决方案 »

  1.   

    charAt 方法返回一个字符值,该字符位于指定索引位置。字符串中的第一个字符的索引为0,第二个的索引为1
    ,而你的理解是他返回一个ansic码,其实他不返回的,你可以自己试一下看看+返回的值是多少,就是说你这个程序根本就没有过滤+,当然要输出了,
     if(!str.charAt(i).equals("+")){ 
        System.out.print(str.charAt(i)+""); 
       }   
    这样就可以了哈
      

  2.   

       
        LS的str.charAt(i)返回的是个char值,“+”是个字符串 怎么可以用char.equals(String);??
      

  3.   

    To 1楼的:
    if(!str.charAt(i).equals("+")){ 
        System.out.print(str.charAt(i)+""); 
       } 
    -----------------------
    -----------------------
    str.charAt(i)返回的是个char值,不能用上面的方法,应该用这个吧
    if(str.charAt(i)!='+'){ 
       System.out.print(str.charAt(i)+""); 
       }   
      

  4.   

    应该是这样的不?
    import java.io.*;
    public class Test1 { 
     public static void main(String[] args) { 
      String str="1234+23545+244252+3435"; 
      for(int i=0;i <str.length();i++){ 
       if(str.charAt(i) > '0' && str.charAt(i) < '9'){ 
        System.out.print(str.charAt(i)+""); 
       }   
      }
      } 
    }
    结果:123423545244252345
      

  5.   

    有必要怎么麻烦吗?不就是提取数字吗?Java是OOP的别拿C和C++中的什么字符来判断好不,个人认为~
    public class Test1 { 
       public static void main(String[] args) { 
          String str="1234+23545+244252+3435"; 
           String[] num = str.split("\\W");
          for(String s : num){
               System.out.print(s);
          }
          System.out.println();
       }   

    output:
    123423545244252345