使用三元运算符和if条件的java差异
我在HackerRank上解决一个代码挑战(将数字从十进制转换为二进制,然后在二进制中打印连续的1)。com和我编写了下面的代码来解决这个问题(见下文)
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
String binaryNum = "";
int count = 0, maxCount = 0;
StringBuilder binary = new StringBuilder();
while(n != 0){
binaryNum = Integer.toString(n % 2);
binary.append(binaryNum);
n /= 2;
}
binary = binary.reverse();
System.out.println(binary);
for(int i = 0; i < binary.length(); i++){
if(binary.charAt(i) == '1'){
count++;
System.out.print("" + count);
} if(count > maxCount) {
maxCount = count;
}
else {
count = 0;
}
}
System.out.print(maxCount);
}
对于上面的代码,当n=439(110111)时,count变量不会增加。它将打印1211111。结果,maxCount是2,而不是3。然而,当我使用下面的代码时,当n=439(120123)时,count变量按预期递增。结果,maxCount等于3
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
String binaryNum = "";
int count = 0, maxCount = 0;
StringBuilder binary = new StringBuilder();
while(n != 0){
binaryNum = Integer.toString(n % 2);
binary.append(binaryNum);
n /= 2;
}
binary = binary.reverse();
System.out.println(binary);
for(int i = 0; i < binary.length(); i++){
count = (binary.charAt(i) == '1') ? count + 1 : 0;
System.out.print("" + count);
if(count > maxCount) {
maxCount = count;
}
}
System.out.print(maxCount);
}
我想理解为什么当我使用第一个代码选项和第二个代码选项时,count的输出是不同的。谢谢你的帮助
共 (0) 个答案