打印出仅包含特定数字的数字

时间:2018-02-20 05:14:13

标签: java algorithm counting

我试图打印出作为命令行参数(例如430)输入的特定数字以下的数字,这些数字包含特定数字(例如2和3)。 所以我的程序只打印包含2和3且低于430的数字,所以答案是:2,3,23,32等。

我已经编写了一段代码但由于某种原因我无法使用它。 任何帮助表示赞赏! 这是我的代码:

public static void main(String[] args) {
    int input  = Integer.parseInt(args[0]);

    for(int i=0; i<input; i++) {
        String test= Integer.toString(i);
            for(int j=0; j<test.length(); j++) {
                if((test.charAt(j) != '2') || (test.charAt(j)!='3')) {

            }
            else {
                System.out.println("The digit is " + i);
            }
        }
    }
}

2 个答案:

答案 0 :(得分:0)

你永远不会到达其他区块。

if((test.charAt(j) != '0')
    || (test.charAt(j)!='1')) {
}

应该是:

if((test.charAt(j) != '0')
     && (test.charAt(j)!='1')) {
}

答案 1 :(得分:0)

这是工作代码。在您的代码中,为什么要检查0和1而不是2和3。

public static void main(String[] args) {
    int input = Integer.parseInt(args[0]);
    int two = 0, three = 0;

    for (int i = 0; i < input; i++) {

        String test = Integer.toString(i);

        if (i < 10 && (test.equals("2") || test.equals("3"))) {
            System.out.println("The digit is " + i);
        } else {
            for (int j = 0; j < test.length(); j++) {
                if (test.charAt(j) == '2') {
                    two++;
                } else if ((test.charAt(j) == '3')) {
                    three++;
                }

            }
            if (two >= 1 && three >= 1) {
                System.out.println("The digit is " + i);
            }
            two = 0;
            three = 0;

        }

    }
}