当前位置: 代码迷 >> Java相关 >> 判断一个数是否为二进制数
  详细解决方案

判断一个数是否为二进制数

热度:635   发布时间:2006-12-01 17:04:31.0
判断一个数是否为二进制数
为什么程序输出结果是这样的??
import java.io.*;
public class Test
{
public static void main(String[] args)throws IOException
{

int sum=0;

String str=new String();
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
str=in.readLine();
int Length=str.length();
for(int i=0;i<Length;i++)
{
if(str.charAt(i)!='0'||str.charAt(i)!='1')
System.out.println("你输入的不是一个二进制数");
}

}
搜索更多相关的解决方案: 二进制数  判断  

----------------解决方案--------------------------------------------------------

我知道了,是我用错了一个符号,把&&用成||了,谢谢


----------------解决方案--------------------------------------------------------
有问题吗]

----------------解决方案--------------------------------------------------------
呵呵
----------------解决方案--------------------------------------------------------
。。。。。。真是郁闷的问题呢。。。
----------------解决方案--------------------------------------------------------
不好意思啊,俺是菜鸟,刚在做这道题嘛!现在做好了,帮忙看一下有什么可以改进的:
import java.io.*;
public class Test
{
public static void main(String[] args)throws IOException
{

int sum=0;

String str=new String();
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
str=in.readLine();
int Length=str.length();
for(int i=0;i<Length;i++)
{
if(str.charAt(i)!='0'&&str.charAt(i)!='1')
System.out.println("你输入的不是一个二进制数");
if(str.charAt(i)=='1')
sum+=Square(i);
}
System.out.println(sum);

}
public static int Square(int i)
{
int square=1;
for(int j=0;j<i;j++)
square*=2;
return square;
}
}


----------------解决方案--------------------------------------------------------
用Integer.parseInt(String s,int radix)就可以了

radix为几进制,如果是二进制,就是2了,输入的字符串不符合二进制规范就会抛出NumberFormatException

----------------解决方案--------------------------------------------------------
以下是引用阅逡在2006-12-1 17:23:22的发言:
不好意思啊,俺是菜鸟,刚在做这道题嘛!现在做好了,帮忙看一下有什么可以改进的:
import java.io.*;
public class Test
{
public static void main(String[] args)throws IOException
{

int sum=0;

String str=new String();
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
str=in.readLine();
int Length=str.length();
for(int i=0;i<Length;i++)
{
if(str.charAt(i)!='0'&&str.charAt(i)!='1')
System.out.println("你输入的不是一个二进制数");
if(str.charAt(i)=='1')
sum+=Square(i);
}
System.out.println(sum);

}
public static int Square(int i)
{
int square=1;
for(int j=0;j<i;j++)
square*=2;
return square;
}
}

算法逻辑是不准确的,如果先输入1然后后面输入任意个0


----------------解决方案--------------------------------------------------------
public static void main(String[] args)
{
int sum=0;
String str=new String();
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
str=in.readLine();
for(int i=0;i<str.length();i++)//循环操作输入的字符串
{
if(str.charAt(i)!='0'&&str.charAt(i)!='1')
{
System.out.println("...");
return;
}
if(i<str.length()-1)
{
sum=(sum+Integer.parseInt(str.substring(i,i+1)))*2;//二进制转十进制最基本方法
}
else
sum=sum+Integer.parseInt(str.substring(str.length()-1,str.length()));//把二进制最后一位加上
}
System.out.println(sum);
}

[此贴子已经被作者于2006-12-1 18:08:02编辑过]


----------------解决方案--------------------------------------------------------
这么复杂
用Integer.parseInt(s,2);不就可以了吗
----------------解决方案--------------------------------------------------------
  相关解决方案