所以基本上这是一种从0
到n
打印数字但是平方的方法。并返回从0
到n
的数字中包含的数字“d”。
我们假设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;
}
如果您需要进一步解释,请随时提出问题。
答案 0 :(得分:1)
您的问题是,当数字包含数字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
实例。