请教,怎么判断从命令行输入的数值是不是整型或别的基本类型啊?

解决方案 »

  1.   

    你从命令行输入的都是String。
    你可以用每个基本类型的包装类去看看。
    如int就用下面方法:
    public static int parseInt(String s)
                        throws NumberFormatException将字符串参数作为有符号的十进制整数进行分析。除了第一个字符可以是用来表示负值的 ASCII 减号 '-' ('\u002D') 外,字符串中的字符都必须是十进制数字。返回得到的整数值,就好像将该参数和基数 10 作为参数赋予 parseInt(java.lang.String, int) 方法一样。 参数:
    s - 包含要分析的 int 表示形式的 String。 
    返回:
    用十进制参数表示的整数值。 
    抛出: 
    NumberFormatException - 如果字符串不包含可分析的整数。其他包装类也有类似的方法。
      

  2.   

    没看懂(我才学java)。
    题目是这样:编写一个Converse程序,分别将作为命令行参数传递的整型值转换为二进制、十六进制及八进制数值。
    我是这样想的,我想定义2个异常,当输入的数值不是整型时抛出第一个异常,当输入的数值超出整型范围时抛出第二个异常。
    第一个异常应该怎么样判断输入的数值是不是整型呢?
    如果用你所说 parseInt(String s)是不是只用int num=paseInt(String s)就会自动抛出我想定义的那2个异常呢?
      

  3.   

    //判断一个字符串是否为整数,其它的可以参照这个方法写对应的方法
    public static boolean isInt(String s) {
            try {
                Integer.parseInt(s);
                return true;
            } catch (NumberFormatException e) {
                return false;
            }
        }
      

  4.   

    谢谢cyeahpro(),按照你的提示完成了程序。
    class IntException extends Exception{
      IntException(){
        System.out.println("输入的数字超出整型范围!");
      }
    }public class Converse {
      public static void main(String[] args) {
        try{
          double dNum=Double.parseDouble(args[0]);
    int num;
    if(dNum>Integer.MAX_VALUE|| dNum< Integer.MIN_VALUE){
      throw new IntException();
    }else{
      num=Integer.parseInt(args[0]);
      System.out.println("转换"+num+"为二进制为:"+Integer.toBinaryString(num));
      System.out.println("转换"+num+"为八进制为:"+Integer.toOctalString(num));
      System.out.println("转换"+num+"为十六进制为:"+Integer.toHexString(num));
    }
        }catch (IntException ie){
          System.out.println("整型数据的范围为:-2147483648~2147483647");   
        }catch (NumberFormatException ne){
          System.out.println("数据格式错误");
        }catch (ArrayIndexOutOfBoundsException ae){
          System.out.println("数组索引越界:"+ae);
        }
      }
    }
    不过只能完成正数,再琢磨下。谢谢各位。