Java 프로그램은 조건이있는 범위의 숫자를 인쇄합니다.

사용자 7274818

나는 루프 운동으로 조금 길을 잃었습니다. 다음 조건을 따르는 범위의 숫자를 인쇄해야합니다.

  1. 숫자의 각 숫자는 왼쪽 숫자의 합과 같아야합니다 . 예를 들면 :

    • 112가 인쇄됩니다. 모든 구성 요소가 왼쪽 숫자의 합이기 때문입니다.

    • 0은 왼쪽 숫자의 합이 아니기 때문에 101은 인쇄되지 않습니다.

  2. 합계가 9보다 크면 10은 버려집니다 .

    • 5500이 인쇄됩니다.

이 코드가 있습니다.

public class Program {

    /**
     * Prints the list of numbers from desde to hasta such that the righmost
     * digit of the sum of previous digits equals current digit, and that
     * happens for all digits
     * 
     * Prints a 2nd line with as many underscores as characters contains the 1st
     * line
     * 
     * If desde < 10 o the parameters make no sense, prints Err __
     * 
     * 
     * @param desde
     *            int from (included)
     * @param hasta
     *            int to (included)
     * @return void
     */
    public static void sumDigitsConsecutius(int desde, int hasta) {

        int suma = 0;
        int numeroSuma = 0;

        for (int i = desde; i <= hasta; i++) {

            int longitud = lenght(i);
            int posicion = longitud - 1;
            int contador = 0;

            for (double numComparar = posicioNumber(i, posicion); posicion > 0; posicion--) {

                numeroSuma = posicioNumber(i, lenght(i));
                suma = suma + numeroSuma;
                if (suma != numComparar) {
                    break;
                } else {

                    numeroSuma = posicioNumber(i, (lenght(i) - 1));
                    contador++;
                }
            }

            if (contador == longitud - 1) {
                System.out.println(i);
            }

        }

    }

    /**
     * With this method i can calculate the length of a number
     */

    public static int lenght(int numero) {

        int contador = 0;

        while (numero > 0) {
            contador++;
            numero = numero / 10;
        }
        return contador;

    }

    public static int posicioNumber(int numero, int posicio) {

        // Digit of n in position p
        int x;
        // Remove right digits from position p.
        x = numero / (int) Math.pow(10, posicio - 1);
        // Get the last digit.
        x = x % 10;
        return x;

    }

    public static void main(String[] args) {
        sumDigitsConsecutius(80, 120);
    }
}

두 가지 추가 방법을 만들었습니다. 첫 번째 방법은 숫자의 길이를 계산하고 두 번째 방법은 위치에 따라 숫자의 값을 계산합니다.

어떤 아이디어?

코더

나는 당신의 코드를 살펴보고 논리의 일부 문제를 식별하고 다음 코드를 통해 수정하고 체인저를 이해할 수 있는지 확인했습니다. (당신의 변수가 영어가 아니기 때문에 당신의 논리를 이해하기가 상당히 어려웠 기 때문에 명심하십시오). 아래 코드는 필요한 결과를 제공합니다.

public class Program {

/**
 * Prints the list of numbers from desde to hasta such that the righmost
 * digit of the sum of previous digits equals current digit, and that
 * happens for all digits
 * 
 * Prints a 2nd line with as many underscores as characters contains the 1st
 * line
 * 
 * If desde < 10 o the parameters make no sense, prints Err __
 * 
 * 
 * @param desde
 *            int from (included)
 * @param hasta
 *            int to (included)
 * @return void
 */
public static void sumDigitsConsecutius(int desde, int hasta) {

    int suma = 0;
    int numeroSuma = 0;

    for (int i = desde; i <= hasta; i++) {

        int longitud = lenght(i);
        int contador = 0;

        suma = 0;
        for (int posicion = longitud; posicion > 0; posicion--) {


            numeroSuma = posicioNumber(i, posicion);
            if (posicion !=longitud && suma != numeroSuma) {
                break;
            } else {
                contador++;
            }
            suma = suma + numeroSuma;

            //If the sum greater than 9 then position discarded 
            if(suma>=10){
                suma=suma%10;
            }
        }

        if (contador == longitud ) {
            System.out.println(i);
        }

    }

}

/**
 * With this method i can calculate the length of a number
 */

public static int lenght(int numero) {

    int contador = 0;

    while (numero > 0) {
        contador++;
        numero = numero / 10;
    }
    return contador;

}

public static int posicioNumber(int numero, int posicio) {

    // Digit of n in position p
    int x;
    // Remove right digits from position p.
    x = numero / (int) Math.pow(10, posicio - 1);
    // Get the last digit.
    x = x % 10;
    return x;

}

public static void main(String[] args) {
    sumDigitsConsecutius(1, 1000);
}


}

위 클래스의 경우 아래 출력을 제공합니다 (숫자 범위 1-1000).

1
2
3
4
5
6
7
8
9
11
22
33
44
55
66
77
88
99
112
224
336
448
550
662
774
886
998

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Java는 5 개의 숫자를 무작위로 생성하고 가장 큰 숫자를 인쇄합니다.

분류에서Dev

별표에서 다이아몬드를 인쇄하는 Java 프로그램은 조정이 필요합니다.

분류에서Dev

프로그램 인쇄는 실린더 면적, 부피, 범위 + 상속 Java에 대해 0.0 인쇄를 유지합니다.

분류에서Dev

완벽한 숫자를 찾는 프로그램 : 출력 오류. 완전 수는 인자의 합이 주어진 숫자와 같은 숫자입니다.

분류에서Dev

C의 기능 Sleep은 프로그램이 이상한 문자를 인쇄하게합니다.

분류에서Dev

숫자의 영어 단어를 인쇄하는 프로그램

분류에서Dev

PROLOG 7로 끝나고 숫자의 합이 100보다 큰 숫자를 인쇄합니다.

분류에서Dev

숫자 (범위 0..100)를 랜덤 화 한 다음 40에서 그 숫자까지 모든 홀수를 인쇄하는 함수를 작성하려고합니다.

분류에서Dev

숫자 범위를 반환하는 표준 유닉스 프로그램이 있습니까

분류에서Dev

이 프로그램에 대해 Java에서 같지 않은 숫자를 얻는 방법은 무엇입니까?

분류에서Dev

Java 8e : 논리 오류 및 배열 색인이 프로그램의 범위를 벗어남 예외

분류에서Dev

조건부 Sumif 수식이 범위 밖의 숫자를 추가합니다.

분류에서Dev

0부터 100까지 모든 짝수를 인쇄하는 Java 프로그램을 작성해야합니다.

분류에서Dev

왜 코드 쓰기의이 조각은 / 모두 0.0 대신 다른 임의의 숫자를 인쇄합니까?

분류에서Dev

범위를 인쇄하는 C 프로그램

분류에서Dev

범위 (0-100)에있는 세 개의 숫자를 랜덤 화하고 가장 큰 숫자를 인쇄하는 함수를 만들려고합니다.

분류에서Dev

범위 (0-100)에있는 세 개의 숫자를 랜덤 화하고 가장 큰 숫자를 인쇄하는 함수를 만들려고합니다.

분류에서Dev

C ++ 프로그램은 cout 대신 일련의 숫자를 출력합니다.

분류에서Dev

문자열의 특정 숫자를 조건이있는 다른 값으로 바꾸는 방법

분류에서Dev

역 기능이 내 cpp 프로그램의 범위를 벗어났습니다.

분류에서Dev

무작위로 생성 된 숫자를 배열로 만드는 프로그램이 계속 충돌합니다.

분류에서Dev

주어진 숫자의 계승에서 3의 수를 찾는 프로그램을 작성 중입니다. 사용자의 입력은 숫자입니다.

분류에서Dev

왜 프로그램은 높이 값 0 대신 하나 명의 I 세트를 인쇄합니까?

분류에서Dev

숫자의 자릿수를 추출, 나는 다음과 같은 프로그램을 사용하여이 번호의 숫자를 추출 할

분류에서Dev

0을 입력 할 때까지 입력 한 숫자를 합산하는 Java 추가 프로그램입니다. SumPositive 및 SumNegative의 평균

분류에서Dev

이 Java 프로그램은 원하지 않는 결과를 생성합니다.

분류에서Dev

그래프의 연결을 확인하는 프로그램은 분할 오류를 생성합니다.

분류에서Dev

어떤 루프 또는 조건을 사용하지 않고 특정 범위의 숫자를 인쇄하기 (자바)

분류에서Dev

어떻게 프로그램이 그것의 위치를 인쇄해야합니까?

Related 관련 기사

  1. 1

    Java는 5 개의 숫자를 무작위로 생성하고 가장 큰 숫자를 인쇄합니다.

  2. 2

    별표에서 다이아몬드를 인쇄하는 Java 프로그램은 조정이 필요합니다.

  3. 3

    프로그램 인쇄는 실린더 면적, 부피, 범위 + 상속 Java에 대해 0.0 인쇄를 유지합니다.

  4. 4

    완벽한 숫자를 찾는 프로그램 : 출력 오류. 완전 수는 인자의 합이 주어진 숫자와 같은 숫자입니다.

  5. 5

    C의 기능 Sleep은 프로그램이 이상한 문자를 인쇄하게합니다.

  6. 6

    숫자의 영어 단어를 인쇄하는 프로그램

  7. 7

    PROLOG 7로 끝나고 숫자의 합이 100보다 큰 숫자를 인쇄합니다.

  8. 8

    숫자 (범위 0..100)를 랜덤 화 한 다음 40에서 그 숫자까지 모든 홀수를 인쇄하는 함수를 작성하려고합니다.

  9. 9

    숫자 범위를 반환하는 표준 유닉스 프로그램이 있습니까

  10. 10

    이 프로그램에 대해 Java에서 같지 않은 숫자를 얻는 방법은 무엇입니까?

  11. 11

    Java 8e : 논리 오류 및 배열 색인이 프로그램의 범위를 벗어남 예외

  12. 12

    조건부 Sumif 수식이 범위 밖의 숫자를 추가합니다.

  13. 13

    0부터 100까지 모든 짝수를 인쇄하는 Java 프로그램을 작성해야합니다.

  14. 14

    왜 코드 쓰기의이 조각은 / 모두 0.0 대신 다른 임의의 숫자를 인쇄합니까?

  15. 15

    범위를 인쇄하는 C 프로그램

  16. 16

    범위 (0-100)에있는 세 개의 숫자를 랜덤 화하고 가장 큰 숫자를 인쇄하는 함수를 만들려고합니다.

  17. 17

    범위 (0-100)에있는 세 개의 숫자를 랜덤 화하고 가장 큰 숫자를 인쇄하는 함수를 만들려고합니다.

  18. 18

    C ++ 프로그램은 cout 대신 일련의 숫자를 출력합니다.

  19. 19

    문자열의 특정 숫자를 조건이있는 다른 값으로 바꾸는 방법

  20. 20

    역 기능이 내 cpp 프로그램의 범위를 벗어났습니다.

  21. 21

    무작위로 생성 된 숫자를 배열로 만드는 프로그램이 계속 충돌합니다.

  22. 22

    주어진 숫자의 계승에서 3의 수를 찾는 프로그램을 작성 중입니다. 사용자의 입력은 숫자입니다.

  23. 23

    왜 프로그램은 높이 값 0 대신 하나 명의 I 세트를 인쇄합니까?

  24. 24

    숫자의 자릿수를 추출, 나는 다음과 같은 프로그램을 사용하여이 번호의 숫자를 추출 할

  25. 25

    0을 입력 할 때까지 입력 한 숫자를 합산하는 Java 추가 프로그램입니다. SumPositive 및 SumNegative의 평균

  26. 26

    이 Java 프로그램은 원하지 않는 결과를 생성합니다.

  27. 27

    그래프의 연결을 확인하는 프로그램은 분할 오류를 생성합니다.

  28. 28

    어떤 루프 또는 조건을 사용하지 않고 특정 범위의 숫자를 인쇄하기 (자바)

  29. 29

    어떻게 프로그램이 그것의 위치를 인쇄해야합니까?

뜨겁다태그

보관