如果整个字符串中只有一个数字的话,那么这个程序应该没有什么问题!
StringSpilter ss=new StringSpilter("his age is 45"," ");//以空格切割

ss.workString();
boolean flag;
String section;
Enumeration enum=ss.m_vData.elements();
while(enum.hasMoreElements()){
section=(String)enum.nextElement();
flag=ss.isNumber(section);
if(flag)
break;
}
int age = Integer.parseInt(section);
    System.out.println("age: "+age);/**
 * 字符串切割器
 */
class StringSpilter{
String m_szString="";
String m_szSpilt="";
Vector m_vData;    /**
     * 构造函数
     * @param str 字符串
     * @param spilt 切割符
     */
public StringSpilter(String str,String spilt){
this.m_szString =str;
this.m_szSpilt =spilt;
} /**
 * 进行切割
 * @return 分割字符串
 */
public Vector workString(){
        this.m_vData=new Vector();
if(this.m_szString.equals("")||this.m_szSpilt.equals(""))
return null;
StringTokenizer st=new StringTokenizer(this.m_szString ,this.m_szSpilt);
while (st.hasMoreTokens()) {
this.m_vData.add(((String)st.nextToken()).trim()) ;
}
return this.m_vData;
} protected boolean isNumber(Stirng Variable){
        int pos=0;
        boolean bNumber=true;//是纯数字
        while((pos<Variable.length())&&(bNumber)){//数字常量
            char ch=Variable.charAt(pos);
            if(Character.isDigit(ch))
                bNumber=true;
            else
                bNumber=false;
            pos++;
        }
        return bNumber;
    }}

解决方案 »

  1.   

    要是用C我会,可以用具体的ASIC码来区分可是java该怎么办还真不知道,能不能也像c那么办?应该可以吧
      

  2.   

    用正则表达式,要求至少为jdk1.4import java.util.regex.*;public class TranInt{
      public static void main(String[] args){
        String resource="asdfsa45sadf23asdfsaf0.1";
        Pattern p=Pattern.compile("(\\d+\\.\\d+)|(\\d+)");
        Matcher m=p.matcher(resource);    
        while(m.find()){
          System.out.println(m.group());
        }
      }
    }
    输出为
    45
    23
    0.1分析出所有的整数,浮点数。简单写的没有考虑负数,改一下pattern就可以了
      

  3.   

    Pattern p=Pattern.compile("(-?\\d+\\.\\d+)|(-?\\d+)");把pattern改成这个就可以了,正负浮点数、整数都可以取出来。