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