java - 整数模字符(也是一个数字)给出不正确的结果

标签 java modulus

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

n%(each digit of n)

我将给定的整数“n”转换为字符串,然后使用 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;
        }

最佳答案

您可以尝试如下:

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

如您所见Integer.valueOf(String s)

Returns an Integer object holding the value of the specified String.

当您传递字符时。

关于java - 整数模字符(也是一个数字)给出不正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51165130/

相关文章:

Java JsonProperty 注释在编码时不起作用

Java SWT 文件保存

Xpath 将节点转换为 mod 的编号

c++ - 为什么负数不以 vector 大小为模给出负数?

java - Java 中的模幂运算

math - 为什么模数以编程语言的方式定义

java - Hibernate 通过多个实体进行复杂查询

java - 无法应用自定义编辑文本的样式

java - 用于十六进制到二进制转换的填充,以便每个十六进制数字产生 4 位

JavaScript - 生成两半的除法