如何判断从命令行输入的数值是不是某种基本类型? 请教,怎么判断从命令行输入的数值是不是整型或别的基本类型啊? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你从命令行输入的都是String。你可以用每个基本类型的包装类去看看。如int就用下面方法:public static int parseInt(String s) throws NumberFormatException将字符串参数作为有符号的十进制整数进行分析。除了第一个字符可以是用来表示负值的 ASCII 减号 '-' ('\u002D') 外,字符串中的字符都必须是十进制数字。返回得到的整数值,就好像将该参数和基数 10 作为参数赋予 parseInt(java.lang.String, int) 方法一样。 参数:s - 包含要分析的 int 表示形式的 String。 返回:用十进制参数表示的整数值。 抛出: NumberFormatException - 如果字符串不包含可分析的整数。其他包装类也有类似的方法。 没看懂(我才学java)。题目是这样:编写一个Converse程序,分别将作为命令行参数传递的整型值转换为二进制、十六进制及八进制数值。我是这样想的,我想定义2个异常,当输入的数值不是整型时抛出第一个异常,当输入的数值超出整型范围时抛出第二个异常。第一个异常应该怎么样判断输入的数值是不是整型呢?如果用你所说 parseInt(String s)是不是只用int num=paseInt(String s)就会自动抛出我想定义的那2个异常呢? //判断一个字符串是否为整数,其它的可以参照这个方法写对应的方法public static boolean isInt(String s) { try { Integer.parseInt(s); return true; } catch (NumberFormatException e) { return false; } } 谢谢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); } } }不过只能完成正数,再琢磨下。谢谢各位。 如何使用java导出大数据为xml文件 急求助:jdbc连接oracle数据库sid和ClassNotFoundException问题 买哪款电脑好? DataInputStream的readUTF() 怎么根据鼠标拖动的位置画圆? java socket问题 请问eclipse如何显示java api的帮助 关于java中打包的讨论 super和this到底怎么样用啊!请教有心得高手! about jcreator pro 2.5 数据库连接池的一些问题 请教一段for循环代码
你可以用每个基本类型的包装类去看看。
如int就用下面方法:
public static int parseInt(String s)
throws NumberFormatException将字符串参数作为有符号的十进制整数进行分析。除了第一个字符可以是用来表示负值的 ASCII 减号 '-' ('\u002D') 外,字符串中的字符都必须是十进制数字。返回得到的整数值,就好像将该参数和基数 10 作为参数赋予 parseInt(java.lang.String, int) 方法一样。 参数:
s - 包含要分析的 int 表示形式的 String。
返回:
用十进制参数表示的整数值。
抛出:
NumberFormatException - 如果字符串不包含可分析的整数。其他包装类也有类似的方法。
题目是这样:编写一个Converse程序,分别将作为命令行参数传递的整型值转换为二进制、十六进制及八进制数值。
我是这样想的,我想定义2个异常,当输入的数值不是整型时抛出第一个异常,当输入的数值超出整型范围时抛出第二个异常。
第一个异常应该怎么样判断输入的数值是不是整型呢?
如果用你所说 parseInt(String s)是不是只用int num=paseInt(String s)就会自动抛出我想定义的那2个异常呢?
public static boolean isInt(String s) {
try {
Integer.parseInt(s);
return true;
} catch (NumberFormatException e) {
return false;
}
}
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);
}
}
}
不过只能完成正数,再琢磨下。谢谢各位。