int 숫자의 별도 숫자를 얻는 방법은 무엇입니까?


143

1100, 1002, 1022 등의 숫자가 있습니다. 예를 들어 첫 번째 숫자 1100의 경우 1, 1, 0, 0과 같이 개별 숫자를 갖고 싶습니다.

Java로 어떻게 구할 수 있습니까?

답변:


204

이렇게하려면 %(mod) 연산자를 사용합니다 .

int number; // = some int

while (number > 0) {
    print( number % 10);
    number = number / 10;
}

mod 연산자는 숫자에 대한 int 나누기의 나머지를 제공합니다.

그래서,

10012 % 10 = 2

때문에:

10012 / 10 = 1001, remainder 2

참고 : Paul이 지적한대로이 번호는 역순으로 표시됩니다. 스택에 밀어 넣고 반대 순서로 튀어 나와야합니다.

숫자를 올바른 순서로 인쇄하는 코드 :

int number; // = and int
LinkedList<Integer> stack = new LinkedList<Integer>();
while (number > 0) {
    stack.push( number % 10 );
    number = number / 10;
}

while (!stack.isEmpty()) {
    print(stack.pop());
}

4
이렇게하면 숫자가 잘못된 순서로 표시되므로 반드시 스택에 밀어 넣거나 역순으로 배열에 넣으십시오.
Paul Tomblin

4
이것은 오른쪽에서 왼쪽으로 나타납니다. (OP의 예는 왼쪽에서 오른쪽으로 보여줍니다). 처리하기에 충분하지만 주목해야합니다.
James Curran

1
@Don, 실제로는 아닙니다. 나는 이것을 좋아하지 않을 것입니다. 그것은이다 방법 빨리하지만 문자열 기반 버전보다. 내가 볼 것 Marimuthu의 일부 빠르고 짧은 코드를하지만 대답.
jjnguy

2
훌륭한 솔루션이지만 숫자가 선행 0으로 시작하는 경우 시나리오를 처리하지 않는 것 같습니다. 예를 들어-001122입니다. 위의 논리를 사용하면 1,1,2,2 만 얻습니다. 선행 0은 % 및 / 연산으로 삭제됩니다. 내가 틀렸다면 정정 해주세요.
goyalshub1509

2
음의 정수는 어떻습니까? -3432를 전달하면 출력이 -2-3-4-3이되어 올바르지 않습니다.
Nodir Nasirov

75

로 변환 String하고 사용 String#toCharArray()또는 String#split().

String number = String.valueOf(someInt);

char[] digits1 = number.toCharArray();
// or:
String[] digits2 = number.split("(?<=.)");

경우에 당신은 이미 자바 (8)에이야 그리고 당신은, 나중에 그 일부 집계 작업을 수행 할 일이 사용을 고려 String#chars()얻을 IntStream그것의 아웃.

IntStream chars = number.chars();

7
이것은 빠르고 더러운 방법입니다.
jjnguy

8
을 사용 split("")하면 배열의 첫 번째 항목은 ""입니다. 과 같은 다른 정규식을 사용하십시오 split("(?<=.)").
True Soft

3
toCharArray는 분할보다 훨씬 빠릅니다. 방금 루프에 1000 번 넣고 toCharArray는 20ms가 걸리고 split은 1021ms가 걸렸습니다. 나는 또한 mod (%)로 10으로 나누기를 사용하여 수학적으로 수행했으며 그렇게하는 데 50ms가 걸렸으므로 toCharArray는 다른 두 가지보다 빠릅니다.
Jerry Destremps

2
편집 : 방금 다시 반복했습니다. 이번에는 더 긴 루프로 확인하십시오 (10,000 반복). toCharArray는 split보다 약 100 배 빠르며 toCharArray는 계수 수학 방법보다 약 5 배 빠릅니다.
Jerry Destremps

9
@BalusC number.chars()는 숫자가 아닌 Ascii 값으로 결과를 반환합니다. 따라서 숫자 "1234"는 "1", "2", "3", "4"대신 "49", "50", "51", "52"로 분할됩니다. 그것을하기 위해서는 다음과 같이 보일 것입니다 :IntStream chars = number.chars().map(Character::getNumericValue);
Koin Arab

29

이건 어때요?

public static void printDigits(int num) {
    if(num / 10 > 0) {
        printDigits(num / 10);
    }
    System.out.printf("%d ", num % 10);
}

또는 콘솔로 인쇄하는 대신 정수 배열로 수집 한 다음 배열을 인쇄 할 수 있습니다.

public static void main(String[] args) {
    Integer[] digits = getDigits(12345);
    System.out.println(Arrays.toString(digits));
}

public static Integer[] getDigits(int num) {
    List<Integer> digits = new ArrayList<Integer>();
    collectDigits(num, digits);
    return digits.toArray(new Integer[]{});
}

private static void collectDigits(int num, List<Integer> digits) {
    if(num / 10 > 0) {
        collectDigits(num / 10, digits);
    }
    digits.add(num % 10);
}

숫자 순서를 최하위 (index [0])에서 최상위 (index [n])로 유지하려면 다음 업데이트 된 getDigits ()가 필요합니다.

/**
 * split an integer into its individual digits
 * NOTE: digits order is maintained - i.e. Least significant digit is at index[0]
 * @param num positive integer
 * @return array of digits
 */
public static Integer[] getDigits(int num) {
    if (num < 0) { return new Integer[0]; }
    List<Integer> digits = new ArrayList<Integer>();
    collectDigits(num, digits);
    Collections.reverse(digits);
    return digits.toArray(new Integer[]{});
}

1
그것은 mod를 사용하여 올바른 순서로 물건을 인쇄하는 좋은 방법입니다. +1
jjnguy

1
이것은 아름답다. "컬렉션을 사용하지 않고 주문을 취소 할 수있는 방법이 있어야합니다 ..." +1
bobndrew 8:08에

완벽한. 나쁜 입력에 영향을 if (number < 0) { return new Integer[0]; }Integer[] samples = {11111, 123457, 0, -13334, 93846, 87892, 9876543, -1234, 012455};
미치지 않도록

24

아무도이 방법을 사용하는 것을 보지 못했지만 나에게 효과적이며 짧고 달콤합니다.

int num = 5542;
String number = String.valueOf(num);
for(int i = 0; i < number.length(); i++) {
    int j = Character.digit(number.charAt(i), 10);
    System.out.println("digit: " + j);
}

출력됩니다 :

digit: 5
digit: 5
digit: 4
digit: 2

놀랍습니다. 감사합니다
Marwa Eltayeb

어떤 이유로,이 논리는 5542 이외의 숫자에 대해 잘못된 출력을 제공합니다. 예를 들어 다음과 같이 시도하십시오. 0142323
tavalendo

@tavalendo는 0142323진법 상수 같다 50387것처럼 의한 선행 제로, 0x10016 진수 정수이다 동일 256의한 선두로 0x0b1011이진 상수 같다 11선두에 기인 0b. 정수 상수에서 0을 선행하는 것에주의하십시오!
AJNeufeld

12

Java 8 스트림을 사용하여 문제를 해결하는 예는 거의 없지만 이것이 가장 간단한 것으로 생각합니다.

int[] intTab = String.valueOf(number).chars().map(Character::getNumericValue).toArray();

명확하게 : String.valueOf(number)int를 String으로 변환 한 다음 chars()IntStream을 얻는 방법 (문자열의 각 문자는 이제 Ascii 숫자 임) map()을 사용하여 Ascii 숫자의 숫자 값을 얻으려면 method를 실행해야합니다 . 마지막에 toArray()메소드를 사용하여 스트림을 int [] 배열로 변경하십시오.


11

모든 대답이보기 흉하고 깨끗하지 않습니다.

문제를 해결하기 위해 약간의 재귀 를 사용하는 것이 좋습니다 . 이 게시물은 매우 오래되었지만 향후 코더에게 도움이 될 수 있습니다.

public static void recursion(int number) {
    if(number > 0) {
        recursion(number/10);
        System.out.printf("%d   ", (number%10));
    }
}

산출:

Input: 12345

Output: 1   2   3   4   5 

젠장 너는 답이 어글 거리는 것에 관한거야. 감사.
파 섹터

6
// could be any num this is a randomly generated one
int num = (int) (Math.random() * 1000);

// this will return each number to a int variable
int num1 = num % 10;
int num2 = num / 10 % 10;
int num3 = num /100 % 10;

// you could continue this pattern for 4,5,6 digit numbers
// dont need to print you could then use the new int values man other ways
System.out.print(num1);
System.out.print("\n" + num2);
System.out.print("\n" + num3);

Java int 유형의 최소값은 -2 ^ 31이고 최대 값은 2 ^ 31-1입니다. 위의 솔루션은 int 유형에 맞는 모든 + ve 값에 어떻게 작동합니까?
realPK

3

더 쉬운 방법은 숫자를 문자열로 변환하고 substring추출하여 정수로 변환하는 것입니다.

이 같은:

int digits1 =Integer.parseInt( String.valueOf(201432014).substring(0,4));
    System.out.println("digits are: "+digits1);

출력은 2014 년


여기에서 유형 변환에 더 많은 비용이 나거나 분할 작업이 필요합니까?
Rahul

3

간단한 해결책

public static void main(String[] args) {
    int v = 12345;
    while (v > 0){
        System.out.println(v % 10);
        v /= 10;
    }
}

2

배열, 재귀 및 모든 멋진 schmancy를 포함하지 않는보다 간단하고 이해하기 쉬운 접근 방식을 사용하여 정수의 숫자를 분리하는 방법을 보여주는 프로그램을 작성했습니다. 내 코드는 다음과 같습니다.

int year = sc.nextInt(), temp = year, count = 0;

while (temp>0)
{
  count++;
  temp = temp / 10;
}

double num = Math.pow(10, count-1);
int i = (int)num;

for (;i>0;i/=10)
{
  System.out.println(year/i%10);
}

입력 값이 integer 123인 경우 결과 출력은 다음과 같습니다.

1
2
3

2

여기 내 대답이 있습니다, 나는 그것을 위해 그것을했고 String 접근 방식을 사용하고 싶지 않거나 더 수학적인 해결책이 필요한 사람들에게는 충분히 간단하기를 바랍니다.

public static void reverseNumber2(int number) {

    int residual=0;
    residual=number%10;
    System.out.println(residual);

    while (residual!=number)  {
          number=(number-residual)/10;
          residual=number%10;
          System.out.println(residual);
    }
}

그래서 나는 단위를 가져 와서 인쇄하고 숫자에서 빼고 그 숫자를 10으로 나눕니다. 단위가 사라지기 때문에 항상 떠 다니는 물건이 없습니다.


1

이 시도:

int num= 4321
int first  =  num % 10;
int second =  ( num - first ) % 100 / 10;
int third  =  ( num - first - second ) % 1000 / 100;
int fourth =  ( num - first - second - third ) % 10000 / 1000;

첫 번째 = 1, 두 번째 = 2, 세 번째 = 3 및 네 번째 = 4 ...가 표시됩니다.


이것은 위에 나열된 일반적인 방법보다 실용적이지 않고 우아하지 않으며을 사용하는 다른 답변과 원칙적으로 다릅니다 %. 가치가 거의 없습니다.
Shawn Mehan

@ Shawn Mehan, 나는 동의하지 않을 것이다. 위의 방법은 대부분 String 사용 또는 긴 여러 줄로 된 솔루션에 관한 것이며, 이것은 단순하고 단순합니다.
parsecer

1

Java 8 솔루션은 문자열로 가지고있는 정수에서 int []로 숫자를 가져옵니다.

int[] digits = intAsString.chars().map(i -> i - '0').toArray();

나는 이것을 시도했지만 작동하지 않습니다. 단순히 "12".chars (). toArray ()를 시도하면 [1,2]를 반환하는 대신 [49,50]을 반환한다는 사실을 알 수 있습니다. 실제로 '1'에 대한 ASCII 코드 인 것 같습니다. '2'는 OP가 원했던 것이 아닙니다.
Fran Marzoa 2016 년

@Fran 당신이 맞아요. i -> i - '0'결과가 OP가 요청한 것과 정확히 일치하도록 매핑 을 포함하도록 답변을 업데이트 했습니다.
qben

사용하는 대신 IMO를 사용하는 것이 더 좋은 i - '0'방법도 Character.toDigit있습니다.
Simon Forsberg

@SimonForsberg 문서에서 메소드를 참조하고 어떻게 작동하는지 코드 스 니펫을 줄 수 있습니까? 더 우아한 방법이 있다면 답변을 업데이트하게되어 기쁩니다.
qben

@qben "0123456789".chars().map(i -> Character.digit(i, 10)).toArray() Character # digit (char와 onet int codePoints)
Simon Forsberg

1

아니 chars() codePoints() — 다른 람다

String number = Integer.toString( 1100 );

IntStream.range( 0, number.length() ).map( i -> Character.digit( number.codePointAt( i ), 10 ) ).toArray();  // [1, 1, 0, 0]

1

Java 9 Stream.iterate는 스트림을 생성하고 특정 조건에서 중지하는 데 사용할 수 있는 새로운 방법을 도입했습니다 . 이것은 모듈로 접근법을 사용하여 숫자의 모든 숫자를 얻는 데 사용될 수 있습니다.

int[] a = IntStream.iterate(123400, i -> i > 0, i -> i / 10).map(i -> i % 10).toArray();

이것은 숫자를 역순으로 가져 오지만 배열을 거꾸로 반복하거나 (어쨌든 배열을 뒤집는 것은 그렇게 간단하지 않습니다 ) 또는 다른 스트림을 생성 하여 해결할 수 있습니다 .

int[] b = IntStream.iterate(a.length - 1, i -> i >= 0, i -> i - 1).map(i -> a[i]).toArray();

또는

int[] b = IntStream.rangeClosed(1, a.length).map(i -> a[a.length - i]).toArray();

예를 들어이 코드는 다음과 같습니다.

int[] a = IntStream.iterate(123400, i -> i > 0, i -> i / 10).map(i -> i % 10).toArray();
int[] b = IntStream.iterate(a.length - 1, i -> i >= 0, i -> i - 1).map(i -> a[i]).toArray();
System.out.println(Arrays.toString(a));
System.out.println(Arrays.toString(b));

인쇄합니다 :

[0, 0, 4, 3, 2, 1]
[1, 2, 3, 4, 0, 0]

0

Integer.toString (1100) 은 정수를 문자열로 제공합니다. Integer.toString (1100) .getBytes () 는 개별 숫자의 바이트 배열을 가져옵니다.

편집하다:

문자 숫자를 숫자로 변환 할 수 있습니다.

  String string = Integer.toString(1234);
  int[] digits = new int[string.length()];

  for(int i = 0; i<string.length(); ++i){
    digits[i] = Integer.parseInt(string.substring(i, i+1));
  }
  System.out.println("digits:" + Arrays.toString(digits));

이것은 약간 잘못된 것입니다. 이렇게하면 문자 나타내는 바이트의 배열을 줄 것이다 '1'또는 '0'. 바이트 값 1은 또는이 아닙니다 0.
jjnguy

오해? 조금 가혹합니다. 그 질문은 모호했다. 그것은 실제로 그가 숫자로하고 싶은 것에 달려 있습니다. 그가 계산을 원한다고 가정합니다. 내 대답은 텍스트 처리를 가정합니다. 어느 가정은 부분적으로 맞지만 오해의 의도는 아닙니다.
돈 브랜슨

바이트 배열을 가져 와서 숫자가 아닌 문자 라고 생각하기 때문에 오해의 소지가 있다고 생각 합니다.
jjnguy

@ 저스틴-아, 알았어. 바이트를 문자가 아닌 것으로 자동으로 연결하지 않습니다. 어셈블리 일에 알파벳을 반복하면서 'a'를 늘리고 'b'를 얻었습니다. 따라서 바이트가 동시에 둘 다있었습니다. 물론, 고급 언어와 UTF는 그 모든 것을 무례하게 만듭니다.
돈 브랜슨

0

이것은 모듈로 10 방법을 사용하여 0보다 큰 숫자로 각 숫자를 알아 낸 다음 배열 순서를 반대로합니다. 시작 숫자로 "0"을 사용하고 있지 않다고 가정합니다.

사용자 입력을 받도록 수정되었습니다. 이 배열은 원래 거꾸로 삽입되었으므로 Collections.reverse()호출을 사용 하여 사용자 순서로 되돌려 놓아야했습니다.

    Scanner scanNumber = new Scanner(System.in);
    int userNum = scanNumber.nextInt(); // user's number

    // divides each digit into its own element within an array
    List<Integer> checkUserNum = new ArrayList<Integer>();
    while(userNum > 0) {
        checkUserNum.add(userNum % 10);
        userNum /= 10;
    }

    Collections.reverse(checkUserNum); // reverses the order of the array

    System.out.print(checkUserNum);

0

주제를 기반으로하기 위해 Java에서 숫자가 palindromic 정수인지 확인하는 방법은 다음과 같습니다.

public static boolean isPalindrome(int input) {
List<Integer> intArr = new ArrayList();
int procInt = input;

int i = 0;
while(procInt > 0) {
    intArr.add(procInt%10);
    procInt = procInt/10;
    i++;
}

int y = 0;
int tmp = 0;
int count = 0;
for(int j:intArr) {
    if(j == 0 && count == 0) {
    break;
    }

    tmp = j + (tmp*10);
    count++;
}

if(input != tmp)
    return false;

return true;
}

이 알고리즘을 더 단순화 할 수 있다고 확신합니다. 그러나 여기가 내가있는 곳입니다. 그리고 그것은 모든 테스트 사례에서 작동했습니다.

나는 이것이 누군가를 돕기를 바랍니다.


0
int number = 12344444; // or it Could be any valid number

int temp = 0;
int divider = 1;

for(int i =1; i< String.valueOf(number).length();i++)
 {

    divider = divider * 10;

}

while (divider >0) {

    temp = number / divider;
    number = number % divider;
    System.out.print(temp +" ");
    divider = divider/10;
}

12344444는 int가되기 위해 커야합니다.
주세페 가라 시노

@Beppe 12344444는 int가 되기에는 너무 크지 않습니다. Java 문서는 다음을 주장합니다. int의 경우 -2147483648에서 2147483647 (포함) 시스템에서 확실히 알고 있지만 System.out.println (Integer.MAX_VALUE); java.lang 패키지에서 지원되는 max_value를 찾으려면
OrwellHindenberg

0
public int[] getDigitsOfANumber(int number) {
    String numStr = String.valueOf(number);
    int retArr[] = new int[numStr.length()];

    for (int i = 0; i < numStr.length(); i++) {
        char c = numStr.charAt(i);
        int digit = c;
        int zero = (char) '0';
        retArr[i] = digit - zero;

    }
    return retArr;
}

1
답변을 업데이트하고 문제 해결 방법을 설명하십시오. 코드 전용 응답은 일반적으로 품질이 낮은 응답으로 간주됩니다.
devlin carnate

0

의견과 함께 내 제안을 아래 참조하십시오

          int size=i.toString().length(); // the length of the integer (i) we need to split;
           ArrayList<Integer> li = new ArrayList<Integer>(); // an ArrayList in whcih to store the resulting digits

        Boolean b=true; // control variable for the loop in which we will reatrive step by step the digits
        String number="1"; // here we will add the leading zero depending on the size of i
        int temp;  // the resulting digit will be kept by this temp variable

    for (int j=0; j<size; j++){
                        number=number.concat("0");
                    }

Integer multi = Integer.valueOf(number); // the variable used for dividing step by step the number we received 
                while(b){

                    multi=multi/10;
                    temp=i/(multi);
                    li.add(temp);
                    i=i%(multi);
                                        if(i==0){
                                        b=false;
                                        }


                }

                for(Integer in: li){
                    System.out.print(in.intValue()+ " ");
                }

0

이 같은 것은 다음을 반환합니다 char[]:

public static char[] getTheDigits(int value){
    String str = "";
    int number = value;
    int digit = 0;
    while(number>0){
        digit = number%10;
        str = str + digit;
        System.out.println("Digit:" + digit);
        number = number/10;     

    }
    return str.toCharArray();
}

0

멍청한 내 대답은 다음과 같습니다.

String number = String.valueOf(ScannerObjectName.nextInt()); 
int[] digits = new int[number.length()]; 
for (int i = 0 ; i < number.length() ; i++)
    int[i] = Integer.parseInt(digits.substring(i,i+1))

이제 모든 숫자가 "digits"배열에 포함됩니다.


0

왜 안 해?

String number = String.valueOf(input);
char[] digits = number.toCharArray();

0

Java 8을 사용하는이 질문에 대한 메소드가 표시되지 않으므로 이것을 넣을 것입니다. a로 시작하고을 String원한다고 가정하면 List<Integer>요소를 스트리밍 할 수 있습니다.

List<Integer> digits = digitsInString.chars()
        .map(Character::getNumericValue)
        .boxed()
        .collect(Collectors.toList());

이것은의 문자를 얻을 StringA와 IntStream, 숫자 값을 문자 그 정수 표현을 매핑 상자에게 그들을 다음리스트로를 수집합니다.


흥미롭게도 chars ()는 IntStream을 반환하므로 boxed () 및 collect ()를 호출하면 즉시 정수 목록을 반환 할 수 있습니다.
Jason

1
ASCII 값을 다시 얻습니다. 따라서 1은 49에 매핑됩니다.
ifly6

흥미 롭습니다! 몰랐어, 타이
Jason

컴파일하지 않습니다 : Collectors.toList()→ " 유형 불일치 : Collector <Object, capture # 3-of ?, List <Object >>를 Supplier <R> " 로 변환 할 수 없습니다 . collect→ "" collect (Supplier <R>, ObjIntConsumer <R 메소드 ?>, 유형 IntStream에 BiConsumer는 <R, R>) 인수 (콜렉터 <개체, 목록 <object >>) 적용 할 수 없습니다 "
롤드 (Gerold) Broser

편집했습니다. 수집하기 전에 박스를 포장해야합니다. 예 : repl.it/@ifly6/HeftyAffectionateHertz#Main.java
ifly6

-1

이것이 숫자를 얻는 가장 유용한 방법이라고 생각합니다.

public int[] getDigitsOf(int num)
{        
    int digitCount = Integer.toString(num).length();

    if (num < 0) 
        digitCount--;           

    int[] result = new int[digitCount];

    while (digitCount-- >0) {
        result[digitCount] = num % 10;
        num /= 10;
    }        
    return result;
}

그런 다음 간단한 방법으로 숫자를 얻을 수 있습니다.

int number = 12345;
int[] digits = getDigitsOf(number);

for (int i = 0; i < digits.length; i++) {
    System.out.println(digits[i]);
}

또는 더 간단하게 :

int number = 12345;
for (int i = 0; i < getDigitsOf(number).length; i++) {
    System.out.println(  getDigitsOf(number)[i]  );
}

마지막 메소드는 getDigitsOf 메소드를 너무 많이 호출합니다. 따라서 느려질 것입니다. int 배열을 만든 다음 두 번째 코드 블록과 마찬가지로 getDigitsOf 메서드를 한 번 호출해야합니다.

다음 코드에서는 처리를 반대로 수행 할 수 있습니다. 이 코드는 모든 숫자를 모아서 숫자를 만듭니다.

public int digitsToInt(int[] digits)
{
    int digitCount = digits.length;
    int result = 0;

    for (int i = 0; i < digitCount; i++) {
        result = result * 10;
        result += digits[i];
    }

    return result;
}

내가 제공 한 두 가지 방법 모두 음수에도 적용됩니다.


-1
import java.util.Scanner;

class  Test 
{  
    public static void main(String[] args)   
    {  
        Scanner sc = new Scanner(System.in); 


    int num=sc.nextInt(); 
    System.out.println("Enter a number (-1 to end):"+num);
    int result=0;
    int i=0;
    while(true) 
    { 
      int n=num%10;
      if(n==-1){
        break;
      }
      i++;
      System.out.println("Digit"+i+" = "+n);
      result=result*10+n;
      num=num/10; 


      if(num==0) 
      { 
        break; 
      } 
    }
    }
}



-1

Java에서는 숫자와 숫자를 분리하여 배열에 저장할 수 있습니다.

public static void main(String[] args) {
        System.out.println("Digits Array:: "+Arrays.toString(getNumberArr(1100)));
}

private static Integer[] getNumberArr(int number) {
    //will get the total number of digits in the number
    int temp = number;
    int counter = 0;

    while (temp > 0) {
        temp /= 10;
        counter++;
    }
    //reset the temp
    temp = number;

    // make an array
    int modulo;     //modulo is equivalent to single digit of the number.
    Integer[] numberArr = new Integer[counter];
    for (int i = counter - 1; i >= 0; i--) {
        modulo = temp % 10;
        numberArr[i] = modulo;  
        temp /= 10;
    }

    return numberArr;
}

산출:

Digits Array:: [1, 1, 0, 0]

-1

경우 자리가 로 의미 Character

String numstr = Integer.toString( 123 );
Pattern.compile( "" ).splitAsStream( numstr ).map(
  s -> s.charAt( 0 ) ).toArray( Character[]::new );  // [1, 2, 3]

Pattern.compile? 그것은 많은 과잉입니다.
사이먼 포스 버그

-3
import java.util.Scanner;

public class SeparatingDigits {

    public static void main( String[] args )
    {

        System.out.print( "Enter the digit to print separately :- ");
        Scanner scan = new Scanner( System.in );

        int element1 = scan.nextInt();
        int divider;

        if( ( element1 > 9999 ) && ( element1 <= 99999 ) )
        {
            divider = 10000;
        }
        else if( ( element1 > 999 ) && ( element1 <= 9999 ) )
        {
            divider = 1000;
        }
        else if ( ( element1 > 99) && ( element1 <= 999 ) )
        {
            divider = 100;
        }
        else if( ( element1 > 9 ) && ( element1 <= 99 ) )
        {
            divider = 10;
        }
        else 
        {
            divider = 1;
        }

        quotientFinder( element1, divider );




    }

     public static void quotientFinder( int elementValue, int dividerValue )
     {
         for( int count = 1;  dividerValue != 0; count++)
         {
            int quotientValue = elementValue / dividerValue ;
            elementValue = elementValue % dividerValue ;
            System.out.printf( "%d  ", quotientValue );

            dividerValue /= 10;

         }
     }
    }

배열과 문자열을 사용하지 않습니다. (숫자 1-99999)

출력 :

별도로 인쇄 할 숫자를 입력하십시오 :-12345

12 34 5


보다 효율적이고 동적으로 결정하는 방법이 있어야합니다 divider.
ZX9
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.