Java 输入if语句

Java 输入if语句,java,if-statement,boolean,parity,Java,If Statement,Boolean,Parity,在这段代码中,从我所看到的一切来看,应该输入for循环,然后输入if语句,只要输入1和0,这就是我正在做的。它没有进入它,正如我从打印报表中看到的 我看不出有什么原因 如果它确实输入了If语句,我也不确定该怎么办,因为我怀疑它只会在最后一位不是1或0的情况下设置true:我的意图是如果输入了除1和0之外的任何内容,则zeroesAndOnes为false。然而,就目前情况而言,它始终是false System.out.println("Please enter a 32 bit number

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

我看不出有什么原因

如果它确实输入了
If
语句,我也不确定该怎么办,因为我怀疑它只会在最后一位不是1或0的情况下设置
true
:我的意图是如果输入了除1和0之外的任何内容,则
zeroesAndOnes
false
。然而,就目前情况而言,它始终是
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.");
        }
System.out.println(“请输入一个由以下内容组成的32位数字”
+“1和0”。”;
字符串编号=kb.nextLine();
整数计数=0;
布尔零和零=假;
对于(int i=0;i1){
如果(数字字符(0)+数字字符(1)%2==1){
symmDiff=1;
}
否则{
symmDiff=0;
}
对于(int i=2;i
检查字符是否相等时,请确保您需要进行比较。比如说

if(number.charAt(i) == 0)
检查十进制值是否相等。要检查实际的“0”字符,请比较字符值

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

在检查字符相等性时,请确保比较是您所需要的。比如说

if(number.charAt(i) == 0)
检查十进制值是否相等。要检查实际的“0”字符,请比较字符值

if ( number.charAt(i) == '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
}

为了比较字符,您应该使用

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
}

number.charAt(i)==0
您可能想在这里比较char值,例如
number.charAt(i)='0'
谢谢!这解决了那个问题。你对第二部分有什么想法吗?根据我现在的理解,结尾部分决定了它是真是假。我希望只有当所有的位都是1或0时它才是真的,但我想不出任何东西。当你找到
'1'
'0'
时,停止将它设置为
true
。将布尔值初始化为
true
,而不是
false
,并且仅当存在冲突时才将其设置为
false
。不要将它设置回
true
一旦它是
false
number.charAt(i)==0
您可能想在这里比较char值,例如
number.charAt(i)==0'
谢谢!这解决了那个问题。你对第二部分有什么想法吗?根据我现在的理解,结尾部分决定了它是真是假。我希望只有当所有的位都是1或0时它才是真的,但我想不出任何东西。当你找到
'1'
'0'
时,停止将它设置为
true
。将布尔值初始化为
true
,而不是
false
,并且仅当存在冲突时才将其设置为
false
。一旦它是
false
,就不要将其设置回
true
。谢谢!我也会问你--你对第二部分有什么想法吗--我现在是怎么知道的,结尾决定了它是真是假。我希望只有当所有的位都是1或0时它才是真的,但我想不出任何东西。你可以用几种方法验证用户输入。一种可能是对每个正确的值进行计数,然后检查此计数是否等于预期的长度-如果这样设置,则将
zeroesAndOnes
设置为true。我在上面添加了我的其余代码,在阅读本文之前,我有一个类似的想法,即对假值进行计数。但是现在,无论我输入什么,我总是会收到“这些数字与规格不匹配”的消息。
count
(在编辑版本中)统计不正确条目的数量。如果全部正确,则为0。然后,您的代码具有条件的
if(number.length()==32&&count>1){
也谢谢你!我也会问你--你对第二部分有什么想法吗--我现在是如何得到它的,结束位决定它是真是假。我希望只有当所有位都是1或0时它才是真的,但我想不出任何东西。你可以用几种方法验证用户输入。一种可能是计算每个正确的值,然后检查此计数是否等于预期长度-如果这样设置,则将zeroesAndOnes设置为True。我在上面添加了我的其余代码,在阅读此内容之前,我有一个类似的想法,即在假值上使用计数。但是现在,无论我输入什么,我总是会收到“这些数字与规范不匹配”消息。
count
(在编辑的版本中)统计不正确条目的数量。如果所有条目都正确,则它将为0。然后,您的代码具有条件
If(number.length()==32&&count>1){
我甚至没有注意到这个错误。谢谢!当我尝试为for循环修改它时,我无法使其工作:If((symmDiff+number.substring(I,I+1))%2==1{我以前从未使用过子字符串。它抱怨这部分中的mod运算符。等等,我更改了它并添加了for(int I=2;I