0

このコード セグメントでは、私が見ているすべてのものから、1 と 0 を入力している限り、forループに入ってからステートメントに入る必要があります。これが私が行っていることです。if印刷ステートメントから見たように、それは入っていません。

理由がわかりません。

ステートメントに入った場合、最後のビットが1または0でない場合ifにのみ設定されるのではないかと疑っているため、どうすればよいかわかりtrueません。私の意図は、1と0以外のものが入力された場合です。しかし、現状では、それは常にです。zeroesAndOnesfalsefalse

 System.out.println("Please enter a 32 bit number consisting of "
                        + "1's and 0's.");
    String number = kb.nextLine();
    int count = 0;
    boolean zeroesAndOnes = false;
    for(int i = 0; i < number.length(); i++){

        if(number.charAt(i) == '0' || number.charAt(i) == '1'){

            zeroesAndOnes = true;
            System.out.println("If boolean " + zeroesAndOnes);
        }

        else{

            zeroesAndOnes = false;
            count++;
        }
    }
    System.out.println("If boolean end " + zeroesAndOnes);


    if(number.length() == 32 && count > 1){

        if(number.charAt(0) + number.charAt(1) % 2 == 1){
            symmDiff = 1;
            }
        else{
            symmDiff = 0;
        }
for(int i = 2; i < number.length(); i++){

                if((symmDiff + number.charAt(i)) % 2 == 1){
                    symmDiff = 1;
                }
                else{
                    symmDiff = 0;
                }

            }

            System.out.println("The parity bit for this number is " + symmDiff);
        }
        else{
            System.out.println("These numbers do not match the specification.");
        }
4

2 に答える 2

2

文字が等しいかどうかを確認するときは、比較が必要なものであることを確認してください。例えば

if(number.charAt(i) == 0)

10 進数値が等しいかどうかをチェックします。実際の「0」文字を確認するには、文字値を比較します

if ( number.charAt(i) == '0' )
于 2016-07-06T20:41:04.340 に答える