我是一名新程序员,我正在尝试编写一个以二进制数作为输入的程序。它首先确定它是否是二进制数,然后如果是,则计算其中有多少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);
答案 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' ) )
你应该研究一些谓词逻辑或离散结构。这将有助于建立你的逻辑印章。