我尝试搜索一个可能已经有答案但找不到答案的现有问题。 对于给定的整数 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++;
}
Returns an Integer object holding the value of the specified String.
当您传递字符
时。
关于java - 整数模字符(也是一个数字)给出不正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51165130/