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;
谢谢,还有 if (B== 0 || B== 1)怎么写,需要将用户输入的二进制数剔除出来,不进入运算,语句怎么写吖?
追答你应该是把二进制转换为十进制,那就应该判断输入的每一个字符都是0或者是1,用正则表达式比较方便,是Regex类,它有几个方法可以判断输入的数是不是合法的类型。也可以用循环的方式判断每个字符是不是0,1,如果合法的话,不用先把它转换为Integer类型,因为二进制的长度一般会超过int的范围的,你可以先从最高位取一个字符,根据所在位置计算出代表的int数,然后向下循环计算,把所有结果加在一起就行了。