所以基本上这是一种从0
到n
打印数字但是平方的方法。并将数字中包含的数字“d”从0
返回到n
。
所以让我们说n=10
和d=1
,我们将有0 1 4 9 16 25 36 49 64 81 100
并且该方法应该返回4
,因为在这组数字中有4
。
这工作正常,但是当n
定义了一个更大的整数时,该方法开始返回错误的位数。
例如,如果我们有n=5750
和d=0
,当它应该返回3012
时,该方法返回4700
。我哪里做错了?
public static int numberOfDig(int n, int d) {
String output="";
for(int i=0;i<=n;i++){
output+=(int)Math.pow(i, 2)+" ";
}
String[] numbers=output.split(" ");
String digit= Integer.toString(d);
int count =0;
for(int i=0;i<numbers.length;i++){
if(numbers[i].contains(digit))count++;
}
return count;
}
如果您需要进一步解释,请随时提出问题。
您的问题是,当数字包含数字d
时,您只会将计数增加1。你需要增加d
在每个数字中出现的次数。
相关代码是:
if (numbers[i].contains(digit))
count++;
因此,如果d == 5
和numbers[i] == 25
,你通过count
增加1
是正确的。
但是,如果d == 0
和numbers[i] == 100
你将count
增加1是不正确的。你应该增加2(因为有两个零)。
一个简单的测试将是n=10
和d=1
,其中output
将是0 1 4 9 16 25 36 49 64 81 100 121
。你的方法将返回5
,因为有五个数字包含1
,而它应该返回6
,因为121
包含两个1
实例。