在Java中将字符串转换为二进制

时间:2014-06-25 20:19:21

标签: java binary

我是一名新程序员,我正在尝试编写一个以二进制数作为输入的程序。它首先确定它是否是二进制数,然后如果是,则计算其中有多少1,然后显示该数量。现在它拒绝了我的所有数字。任何帮助将不胜感激。

Scanner scan = new Scanner(System.in);
String binary;
int count = 0;
System.out.print( "Enter your binary number: ");
binary = scan.nextLine( );

for ( int i = 0; i <= binary.length()-1; i++){
    char c = binary.charAt(i);

    while ((c != '1') || (c != '0')){
        System.out.println( "Invalid Number try again" );
        System.out.println("Enter your binary number: ");
        binary = scan.nextLine();
    }
    if ( c == '1')
        count++;
}
System.out.println("The number of 1s are: "+count);          

2 个答案:

答案 0 :(得分:2)

你的while条件检查char不等于1或不等于0.如果你想一想,这一定必须是假的。

e.g。如果考虑的输入字符为1,则将评估为FALSE或TRUE,因此为TRUE。如果输入char为0,则它​​将评估为TRUE或FALSE,这也是TRUE。

因此更改条件以检查char不是1而不是0。

答案 1 :(得分:2)

您的while条件逻辑上不正确。现在,您正在检查角色是“非1”还是“非0”。所有数字都不是1或不是0.

如果要排除任何既不是1也不是0的字符,则需要编写

while ( ( c != '1' ) && ( c != '0' ) )

你应该研究一些谓词逻辑或离散结构。这将有助于建立你的逻辑印章。