自我描述数字程序在Java中为新手

时间:2016-02-19 18:59:43

标签: java math

我尝试制作一个搜索4位数字的程序,然后尝试识别两个自描述数字(第一个数字等于整数和下一个数字的数字)数字等于整数中的数字等等,我写了一个do循环:

HTTPS

会查看所有可能包含我正在寻找的输出类型的4位数字。

我想找到一种方法来确定"整数"是一个自我描述的数字。

(我最近才开始编程,所以我不太好)

2 个答案:

答案 0 :(得分:2)

 while (integer <= 3210) {
        char firstDigit = (integer.toString()).charAt(0);
        char secondDigit = '0';
        char thirdDigit = '0';
        char fourthDigit = '0';
        if ((integer.toString().length()) > 1) {
            secondDigit = (integer.toString()).charAt(1);
            if ((integer.toString().length()) > 2) {
                thirdDigit = (integer.toString()).charAt(2);
                if ((integer.toString().length()) > 3) {
                    fourthDigit = (integer.toString()).charAt(3);
                }
            }
        }
        int numOfZeroes = 0;
        int numberOfOnes = 0;
        int numberOfTwos = 0;
        int numberOfThrees = 0;
        int i = 0;
        while (i < (integer.toString()).length()) {
            if ((integer.toString()).charAt(i) == '0') {
                numOfZeroes++;
            } else if ((integer.toString()).charAt(i) == '1') {
                numberOfOnes++;
            } else if ((integer.toString()).charAt(i) == '2') {
                numberOfTwos++;
            } else if ((integer.toString()).charAt(i) == '3') {
                numberOfThrees++;
                i++;
            }
            if (firstDigit == numOfZeroes + '0' && secondDigit == numberOfOnes + '0'
                    && thirdDigit == numberOfTwos + '0' && fourthDigit == numberOfThrees + '0') {
                System.out.println(integer);
            }
            integer++;
        }
    }

这将按照您想要的方式工作,仅适用于此特定范围的数字。但是,没有输出,但我只用前面提到的两个条件进行了测试,并且工作正常。

我认为有更好的方法可以做到这一点。这有点多余。

答案 1 :(得分:0)

我确信使用Java 8流有更好的解决方案,但这是一种更传统的方法。

String s = Integer.toString(integer);
        boolean isDescriptive = true;
        int i = 0;
        while (i < s.length() && isDescriptive) {
            int temp = Integer.parseInt(s.charAt(i) + "");
            int count = 0;
            for (int j = 0; j < s.length(); j++) {
                if (i == Integer.parseInt(s.charAt(j) + "")) {
                    count++;
                }
            }
            if (count != temp) {
                isDescriptive = false;
            }
            i++;
        }