java中怎么判断输入的数据是int型还是string型,请指点下面的勘误,谢谢

case 2 :
{
Scanner scn= new Scanner(System.in);
System.out.println("Enter your positive binary value> ");
String input=scn.next();

char B = 0;
for (int i = 0; i < input.length()-1; i++)
{

B= input.charAt(i);
}
System.out.println(B);
if (B== 0 || B== 1)
{

int x=Integer.parseInt(input);
int value = 0;
int position =input.length()-1;
int power=1;
for(int j=0;j<=position;j++)
{
int y = x%10;
value= value+(int) (y*Math.pow(2,j));
x=x/10;
}
System.out.println("The equivalent integer value is: "+value);
}

else
{
System.out.println("ERROR! Binary numbers can only contain 0's and 1's.");

}

}
break;

你好,此问题可以借助于java正则表达式特性解决。首先使用Scanner实例对象获取下一个字符串,暂时假设保存在String inputStr。int型的正则表达式可使用下述字符串表示:
String regStr = "^[+-]?[1-9][0-9]*$|^0$";
可用下述if语句实现整数的判断:
if(inputStr.match(regStr)){
System.out.println("整数");
}else{
System.out.println("非整数");
}
最后,诚望学有所成!
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-15
你好,可以通过Scan 对象的nextInt()获得输入的整数,也可以用nextLine()获得字符串,然后再try catch 中转换为整数,如果转换成功说明输入的是整数,否则不是,可以循环检测。而你写的这个程序下面的
for (int i = 0; i < input.length()-1; i++)
{
B= input.charAt(i);
}
,你是想获得最后一个数吗?,直接 i < input.length(),就行了,不过还是建议你用nextLine,然后用Integer.parseInt(String str),转换。追问

谢谢,还有 if (B== 0 || B== 1)怎么写,需要将用户输入的二进制数剔除出来,不进入运算,语句怎么写吖?

追答

你应该是把二进制转换为十进制,那就应该判断输入的每一个字符都是0或者是1,用正则表达式比较方便,是Regex类,它有几个方法可以判断输入的数是不是合法的类型。也可以用循环的方式判断每个字符是不是0,1,如果合法的话,不用先把它转换为Integer类型,因为二进制的长度一般会超过int的范围的,你可以先从最高位取一个字符,根据所在位置计算出代表的int数,然后向下循环计算,把所有结果加在一起就行了。

第2个回答  2013-09-16
使用正则表达式
String rex="^\\d+$";
if(input.matches(res)){
//是int

}

Warning: Invalid argument supplied for foreach() in /www/wwwroot/aolonic.com/skin/templets/default/contents.html on line 45
相似回答