【问题标题】:Java: Check if every single digit of a number is within a rangeJava:检查一个数字的每个数字是否在一个范围内
【发布时间】:2017-12-17 01:52:03
【问题描述】:

我正在创建一个将两个整数作为参数的类的方法。它检查第一个数字的每一个数字,并确保它们小于或等于第二个数字。

public static boolean digitRange(int x, int limit) {
    String number= Integer.toString(x);
    char[] digits=number.toCharArray();
    boolean result=false;
    for(char c: digits) {
        if(Integer.parseInt(String.valueOf(c))>limit) {
            result=false;
        }
    }
    return result;
}

0 和 5 的预期输出是:

public static void main(String[] args){
    System.out.println(digitRange(0,5));//0 is les than or equal to 5. 
                                        //Therefore true is printed. 
} 

但是,我在每一个场景中都变得错误,我找不到原因。 请有人帮我纠正 digitRange 方法。

【问题讨论】:

    标签: java arrays loops boolean


    【解决方案1】:
    String number= Integer.toString(x);
    char[] digits=number.toCharArray();
    boolean result=false;
    for(char c: digits) {
        if(Integer.parseInt(String.valueOf(c))>limit) {
            result=false;
        }
    }
    return result;
    

    您永远不会在任何地方将result 设置为true。改为

    boolean result=true;
    

    但是,考虑一种完全不同的方法:

    public static boolean digitRange(int x, int limit)
    {
        int t = Math.abs(x);
        while (t > 0)
        {
            if (t % 10 > limit)
                return false;
            t /= 10;
        }
        return true;
    }
    

    【讨论】:

      【解决方案2】:

      您永远不会将结果值设置为 true。一旦你建立了 false 就简单地返回,因为你不再需要检查,如果你退出迭代,返回 true。

      public static boolean digitRange(int x, int limit) {
          String number= Integer.toString(x);
          char[] digits=number.toCharArray();
      
          for(char c: digits) {
              if(Integer.parseInt(String.valueOf(c))>limit) {
                  return false;
              }
          }
          return true;
      }
      

      【讨论】:

        【解决方案3】:

        该函数接受两个数字并检查每个数字是否在第二个数字的范围内,如果所有数字都小于第二个数字则返回true,否则返回false。

        public boolean check(int one,int two){
            while(one>0){
                if(one%10>two)
                    return false;
                one=one/10;
            }
            return true;
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-11-04
          相关资源
          最近更新 更多