0

在这段代码中,从我所看到的一切来看,它应该是进入for循环然后进入if语句,只要你输入 1 和 0,这就是我正在做的。正如我从我的打印声明中看到的那样,它没有进入它。

我不明白为什么。

如果它确实进入了if语句,我也不确定该怎么做,因为我怀疑它只会true在最后一位不是 1 或 0 时设置:我的意图zeroesAndOnesfalse如果输入了 1 和 0 之外的任何内容。然而,就目前而言,它false一直都是。

 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

检查 char 是否相等时,请确保比较是您需要的。例如

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

检查十进制值是否相等。要检查实际的“0”字符,请比较字符值

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

比较你应该使用的字符

if(number.chartAt(i) == '0') 

另一个问题是 number.charAt(0) 会给你 char 而不是 int。所以当你在做

number.charAt(0)+number.charAt(1) //you are concatenating character at index 0 and index 1
// do this
int first = Integer.parseInt(number.substring(0,1));
int second = Integer.parseInt(number.substring(1,2));
if( (first+second)%2 == 1){
    // your statement
}
于 2016-07-06T20:59:52.133 回答