整数模字符(也是数字)给出错误的结果

时间:2018-07-04 02:50:54

标签: java modulus

我尝试搜索一个可能已经有了答案但找不到的现有问题。 对于给定的整数n,我尝试将模运算符应用为:

n%(each digit of n)

我将给定的整数“ n”转换为String,然后使用str.charAt()方法获得给定数字的每个数字。

static int findDigits(int n) {
        String num = String.valueOf(n);
        int count = 0;
        for(int i=0; i<num.length(); i++)
        {
            if(n % num.charAt(i) == 0)
            {

                count++;
            }
        }
        return count;
    }

但是,n % num.charAt(i)没有返回正确的结果。 例如,如果n为12:当i = 0时,12%1返回12而不是0。 如果n为1012:当i = 0时,1012%1返回32而不是0。

将num.charAt(i)转换为整数,即Integer.valueOf(num.charAt(i))也不起作用,它无效:

我发现使用Character.getNumericValue()方法可以得到正确的结果。 为什么? 这有效:

static int findDigits(int n) {
            String num = String.valueOf(n);
            int count = 0;
            for(int i=0; i<num.length(); i++)
            {
                if(n % Character.getNumericValue(num.charAt(i)) == 0)
                {
                    count++;
                }
            }
            return count;
        }

1 个答案:

答案 0 :(得分:0)

您可以尝试以下操作:

        if (n % Integer.valueOf(String.valueOf(num.charAt(i))) == 0) {
            count++;
        }

您会看到Integer.valueOf(String s)

  

返回一个保存指定String值的Integer对象。

,当您传递Character时。