代码无法打印正确的重复数字

时间:2017-12-21 02:29:52

标签: java

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

我们假设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;
}

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

1 个答案:

答案 0 :(得分:1)

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

相关代码是:

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

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

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

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