有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用三元运算符和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) 个答案