import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class SearchString { //输入浮点数
public static String inputFloat() throws IOException{
 BufferedReader   in   =   new   BufferedReader(new   InputStreamReader(System.in));   
         System.out.print("input floatnumber please:");   
         String number=   in.readLine();   
         return number;
}
//获得小数部分
public static String getRightPart(String number){
 return  number.substring(number.indexOf(".")+1); 
}
//获得整数部分
public static int getLeftPart(double input){
return (int)Math.floor(input);
}

//输入数字,判断该数字是不是浮点数;然后输出相应的整数部分和小数部分
public static void main(String[] args) throws IOException{
String input = inputFloat();
  try{   
  double dbinput=Double.parseDouble(input);
  System.out.println("整数部分是:"+getLeftPart(dbinput)+"\n小数部分是"+getRightPart(input));
  }catch(Exception ex){
   System.out.println("请输入浮点数");
  }   
}
}

解决方案 »

  1.   


              public void print(String number){
                      String[] s = number.split(".");
                      if(s.length > 2){ //非法
                             System.out.println("数字非法");
                        }else if(s.length == 2){
                              System.out.println("整数部分:" + s[0]);
                              System.out.println("小数部分:" + s[1]);
                      }else{
                              System.out.println("整数是:" + s[0]);
                      }
              }
      

  2.   

    用正则表达式判断是否为浮点数要比 Double.parseDouble 要快很多。String pattern = "[+-]?\\d*\\d(?:\\.\\d+)?";
    boolean isNum = strNum.matcher(pattern);在 isNum 为 true 后再进行处理。
      

  3.   


    // 输入浮点数
    public static String inputFloat() throws IOException {
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    System.out.print("input>");
    String number = in.readLine();
    return number;
    } // 获得小数部分
    public static String getRightPart(String number) {
    return number.substring(number.indexOf(".") + 1);
    } // 获得整数部分
    public static int getLeftPart(double input) {
    return (int) Math.floor(input);
    } // 输入数字,判断该数字是不是浮点数;然后输出相应的整数部分和小数部分
    public static void main(String[] args) throws IOException {
    boolean exit = false;
    while (!exit){
    String input = inputFloat();
    if (input.toLowerCase().equals("exit")) {
    exit = true;
    continue;
    }
    if (input.toLowerCase().startsWith("desc")) {
    System.out.println("本程序用于浮点分析,请输入要分析的浮点数之后Enter,退出输入exit按Enter!");
    continue;
    }
    try {
    double dbinput = Double.parseDouble(input);
    System.out.println("整数部分是:" + getLeftPart(dbinput) + "\n小数部分是"
    + getRightPart(input));
    } catch (Exception ex) {
    System.out.println("请输入浮点数");
    }
    }
    }呵呵 楼主勿怪哈  我改着好玩的!
      

  4.   

    2楼的那个应改为:String[] s = number.split("\\.");
      

  5.   

    "用正则表达式判断是否为浮点数要比 Double.parseDouble 要快很多。"
    为什么?