java中的零计数

java中的零计数,java,Java,我不知道我哪里做错了。我想通过递归数零,但我没有得到: public class countzeroes { public static int countZerosRec(int input){ int count=0; return countZerosRec(input,count); } private static int countZerosRec(int input ,int count){ if (input<0)

我不知道我哪里做错了。我想通过递归数零,但我没有得到:

public class countzeroes {

    public static int countZerosRec(int input){
      int count=0;
      return countZerosRec(input,count);
    }

  private static int countZerosRec(int input ,int count){
      if (input<0) {
          return -1;
      }
      if(input==0) {
          return 1; 
      }
    int m = input%10;
    input = input/10;
    if(m==0){
      count++;
    }
    countZerosRec(input,count);
    return count; 
  }

  public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int n = s.nextInt();
        System.out.println(countZerosRec(n));
    }
}
公共类countzero{
公共静态整数countZerosRec(整数输入){
整数计数=0;
返回countZerosRec(输入,计数);
}
私有静态int countZerosRec(int输入,int计数){

如果(输入按以下方式更改方法。始终返回
计数

public class countzeroes {

    public static int countZerosRec(int input){
      int count=0;
      return countZerosRec(input,count);
    }

  private static int countZerosRec(int input ,int count){
      if (input<0) {
          return -1;
      }
      if(input==0) {
          return 1; 
      }
    int m = input%10;
    input = input/10;
    if(m==0){
      count++;
    }
    countZerosRec(input,count);
    return count; 
  }

  public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int n = s.nextInt();
        System.out.println(countZerosRec(n));
    }
}
private static int countZerosRec(int input ,int count){
    if (input <= 0) { // check if input is negative or zero
        return count;
    }

    int m = input % 10;
    input = input / 10;

    if (m == 0) {
        count++; // increment if current digit is zero
    }

    return countZerosRec(input,count); 
}
私有静态int countZerosRec(int输入,int计数){

如果(输入按以下方式更改方法。始终返回
计数

public class countzeroes {

    public static int countZerosRec(int input){
      int count=0;
      return countZerosRec(input,count);
    }

  private static int countZerosRec(int input ,int count){
      if (input<0) {
          return -1;
      }
      if(input==0) {
          return 1; 
      }
    int m = input%10;
    input = input/10;
    if(m==0){
      count++;
    }
    countZerosRec(input,count);
    return count; 
  }

  public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int n = s.nextInt();
        System.out.println(countZerosRec(n));
    }
}
private static int countZerosRec(int input ,int count){
    if (input <= 0) { // check if input is negative or zero
        return count;
    }

    int m = input % 10;
    input = input / 10;

    if (m == 0) {
        count++; // increment if current digit is zero
    }

    return countZerosRec(input,count); 
}
私有静态int countZerosRec(int输入,int计数){
如果(输入
这会管用的

public class countzeroes {

    public static int countZerosRec(int input){
      int count=0;
      return countZerosRec(input,count);
    }

  private static int countZerosRec(int input ,int count){
      if (input<0) {
          return -1;
      }
      if(input==0) {
          return 1; 
      }
    int m = input%10;
    input = input/10;
    if(m==0){
      count++;
    }
    countZerosRec(input,count);
    return count; 
  }

  public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int n = s.nextInt();
        System.out.println(countZerosRec(n));
    }
}

这将起作用

您的计数逻辑非常出色。
public class countzeroes {

    public static int countZerosRec(int input){
      int count=0;
      return countZerosRec(input,count);
    }

  private static int countZerosRec(int input ,int count){
      if (input<0) {
          return -1;
      }
      if(input==0) {
          return 1; 
      }
    int m = input%10;
    input = input/10;
    if(m==0){
      count++;
    }
    countZerosRec(input,count);
    return count; 
  }

  public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int n = s.nextInt();
        System.out.println(countZerosRec(n));
    }
}
在下面的一行中…您犯了逻辑错误…请修复它

public class countzeroes {

    public static int countZerosRec(int input){
      int count=0;
      return countZerosRec(input,count);
    }

  private static int countZerosRec(int input ,int count){
      if (input<0) {
          return -1;
      }
      if(input==0) {
          return 1; 
      }
    int m = input%10;
    input = input/10;
    if(m==0){
      count++;
    }
    countZerosRec(input,count);
    return count; 
  }

  public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int n = s.nextInt();
        System.out.println(countZerosRec(n));
    }
}
    private static int countZerosRec(int input, int count) {

        if (input < 0) {
            return -1;
        }
        if (input == 0) {
         return count;

            //return 1; /// you need to change your code here, in last its getting zero as (num < 10 )/10 is 0
            // its entering here everytime, and returning one.
            // since its the base condition to exit the recursion.

// for special case of 0 (zero) count, handle your logic when it is //returned.
    //...... rest of your code
    }
私有静态int countZerosRec(int输入,int计数){
如果(输入<0){
返回-1;
}
如果(输入==0){
返回计数;
//返回1;///您需要在这里更改代码,最后它得到零,因为(num<10)/10是0
//它每次都进入这里,然后返回一个。
//因为它是退出递归的基本条件。
//对于0(零)计数的特殊情况,在//返回时处理逻辑。
//……代码的其余部分
}

您的计数逻辑非常出色。 在下面的一行中…您犯了逻辑错误…请修复它

public class countzeroes {

    public static int countZerosRec(int input){
      int count=0;
      return countZerosRec(input,count);
    }

  private static int countZerosRec(int input ,int count){
      if (input<0) {
          return -1;
      }
      if(input==0) {
          return 1; 
      }
    int m = input%10;
    input = input/10;
    if(m==0){
      count++;
    }
    countZerosRec(input,count);
    return count; 
  }

  public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int n = s.nextInt();
        System.out.println(countZerosRec(n));
    }
}
    private static int countZerosRec(int input, int count) {

        if (input < 0) {
            return -1;
        }
        if (input == 0) {
         return count;

            //return 1; /// you need to change your code here, in last its getting zero as (num < 10 )/10 is 0
            // its entering here everytime, and returning one.
            // since its the base condition to exit the recursion.

// for special case of 0 (zero) count, handle your logic when it is //returned.
    //...... rest of your code
    }
私有静态int countZerosRec(int输入,int计数){
如果(输入<0){
返回-1;
}
如果(输入==0){
返回计数;
//返回1;///您需要在这里更改代码,最后它得到零,因为(num<10)/10是0
//它每次都进入这里,然后返回一个。
//因为它是退出递归的基本条件。
//对于0(零)计数的特殊情况,在//返回时处理逻辑。
//……代码的其余部分
}
您可以使用流:

public class countzeroes {

    public static int countZerosRec(int input){
      int count=0;
      return countZerosRec(input,count);
    }

  private static int countZerosRec(int input ,int count){
      if (input<0) {
          return -1;
      }
      if(input==0) {
          return 1; 
      }
    int m = input%10;
    input = input/10;
    if(m==0){
      count++;
    }
    countZerosRec(input,count);
    return count; 
  }

  public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int n = s.nextInt();
        System.out.println(countZerosRec(n));
    }
}
System.out.println("11020304".chars().filter(c -> c == '0').count());
结果:3

您可以使用流:

public class countzeroes {

    public static int countZerosRec(int input){
      int count=0;
      return countZerosRec(input,count);
    }

  private static int countZerosRec(int input ,int count){
      if (input<0) {
          return -1;
      }
      if(input==0) {
          return 1; 
      }
    int m = input%10;
    input = input/10;
    if(m==0){
      count++;
    }
    countZerosRec(input,count);
    return count; 
  }

  public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int n = s.nextInt();
        System.out.println(countZerosRec(n));
    }
}
System.out.println("11020304".chars().filter(c -> c == '0').count());

结果:3正确的方法是:

public class countzeroes {

    public static int countZerosRec(int input){
      int count=0;
      return countZerosRec(input,count);
    }

  private static int countZerosRec(int input ,int count){
      if (input<0) {
          return -1;
      }
      if(input==0) {
          return 1; 
      }
    int m = input%10;
    input = input/10;
    if(m==0){
      count++;
    }
    countZerosRec(input,count);
    return count; 
  }

  public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int n = s.nextInt();
        System.out.println(countZerosRec(n));
    }
}
public class countzeroes {

    private static int countZerosRec(int input){
        if (input<0) {
            return -1;
        }

        if (input==0) {
            return 1;
        }

        if(input < 10) {
            return 0;
        }

        int m = (input%10 == 0)? 1: 0;

        input = input/10;

        return m + countZerosRec(input);
    }

    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int n = s.nextInt();
        System.out.println(countZerosRec(n));
    }

}
公共类countzero{
私有静态int countZerosRec(int输入){

如果(输入正确的方法是:

public class countzeroes {

    public static int countZerosRec(int input){
      int count=0;
      return countZerosRec(input,count);
    }

  private static int countZerosRec(int input ,int count){
      if (input<0) {
          return -1;
      }
      if(input==0) {
          return 1; 
      }
    int m = input%10;
    input = input/10;
    if(m==0){
      count++;
    }
    countZerosRec(input,count);
    return count; 
  }

  public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int n = s.nextInt();
        System.out.println(countZerosRec(n));
    }
}
public class countzeroes {

    private static int countZerosRec(int input){
        if (input<0) {
            return -1;
        }

        if (input==0) {
            return 1;
        }

        if(input < 10) {
            return 0;
        }

        int m = (input%10 == 0)? 1: 0;

        input = input/10;

        return m + countZerosRec(input);
    }

    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int n = s.nextInt();
        System.out.println(countZerosRec(n));
    }

}
公共类countzero{
私有静态int countZerosRec(int输入){

if(input==0)语句中的if(inputPut
returncount
,而不是
countZerosRec(input,count);return count;
put
return countZerosRec(input,count);
if(input==0)语句中的put
return count
,而不是
public class countzeroes {

    public static int countZerosRec(int input){
      int count=0;
      return countZerosRec(input,count);
    }

  private static int countZerosRec(int input ,int count){
      if (input<0) {
          return -1;
      }
      if(input==0) {
          return 1; 
      }
    int m = input%10;
    input = input/10;
    if(m==0){
      count++;
    }
    countZerosRec(input,count);
    return count; 
  }

  public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int n = s.nextInt();
        System.out.println(countZerosRec(n));
    }
}

countZerosRec(输入,计数);return count;
put
return countZerosRec(输入,计数);

样本编号的正确结果是什么?例如120100。正确答案是3吗?您忽略递归调用的结果
countZerosRec(输入,计数)
@hamidghasemi它应该是3,但它是0@AndyTurner我应该如何解决这个问题?样本号的正确结果是什么?例如120100。正确答案是3吗?您忽略递归调用的结果
countZerosRec(输入,计数)
@hamidghasemi它应该是3,但它是0@AndyTurner我应该如何修复这看起来不错,但是
countZerosRec(0)
将返回0而不是1。@DodgyCodeException你是对的。让我更正一下。@DodgyCodeException我刚刚添加了另一个
if
语句来检查零。这看起来不错,但是
countZerosRec(0)
将返回0而不是1。@DodgyCodeException你说得对。让我更正一下。@DodgyCodeException我刚刚添加了另一个
if
语句来检查零。
public class countzeroes {

    public static int countZerosRec(int input){
      int count=0;
      return countZerosRec(input,count);
    }

  private static int countZerosRec(int input ,int count){
      if (input<0) {
          return -1;
      }
      if(input==0) {
          return 1; 
      }
    int m = input%10;
    input = input/10;
    if(m==0){
      count++;
    }
    countZerosRec(input,count);
    return count; 
  }

  public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int n = s.nextInt();
        System.out.println(countZerosRec(n));
    }
}