代码不会打印正确数量的重复数字

问题描述 投票:-3回答:1

所以基本上这是一种从0n打印数字但是平方的方法。并将数字中包含的数字“d”从0返回到n

所以让我们说n=10d=1,我们将有0 1 4 9 16 25 36 49 64 81 100并且该方法应该返回4,因为在这组数字中有4

这工作正常,但是当n定义了一个更大的整数时,该方法开始返回错误的位数。

例如,如果我们有n=5750d=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;
}

如果您需要进一步解释,请随时提出问题。

java
1个回答
1
投票

您的问题是,当数字包含数字d时,您只会将计数增加1。你需要增加d在每个数字中出现的次数。

相关代码是:

if (numbers[i].contains(digit))
    count++;

因此,如果d == 5numbers[i] == 25,你通过count增加1是正确的。

但是,如果d == 0numbers[i] == 100你将count增加1是不正确的。你应该增加2(因为有两个零)。

一个简单的测试将是n=10d=1,其中output将是0 1 4 9 16 25 36 49 64 81 100 121。你的方法将返回5,因为有五个数字包含1,而它应该返回6,因为121包含两个1实例。

© www.soinside.com 2019 - 2024. All rights reserved.