我尝试搜索一个可能已经有了答案但找不到的现有问题。 对于给定的整数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;
}
答案 0 :(得分:0)
您可以尝试以下操作:
if (n % Integer.valueOf(String.valueOf(num.charAt(i))) == 0) {
count++;
}
返回一个保存指定String值的Integer对象。
,当您传递Character
时。