자바를 공부하고 있습니다. 정수를 배열로 저장을 어떻게 하죠?

조회수 9492회

정수 하나를 받아서 오름차순이나 내림차순으로 정렬을 할려구 합니다. 만약 제가 정수 152496를 받으면 이 정수를 배열 A[]에 A[0]=1 A[1]=5 A[2]=2 A[3]=4 A[4]=9 A[5]=6 이렇게 저장하는 방법이 있을까요?

아니면 다른 방법으로도 정수를 정렬하는 방법이 있을까요?

2 답변

  • 좋아요

    1

    싫어요
    채택 취소하기
    public class Example {
        public static void main(String[] args) {
            String input = "152496"; // 입력받은 정수 문자열
            int[] A = new int[input.length()]; // input 문자열 길이만큼 배열 준비.
            for(int i=0;i<input.length();i++) {
                A[i] = input.charAt(i) - '0'; // i=0 일때, '1' - '0' = 1 이됨.
            }
            //출력
            for(int i=0;i<A.length;i++) {
                System.out.println("A["+i+"]="+A[i]);
            }
        }
    }    
    

    질문하신 그대로 하려면 위와 같이 하면 됩니다.

    한 char를 숫자로 바꿀때는 '1' - '0'과 같이 Ascii의 차이값으로 구할 수 있습니다.

    둘 이상의 char로 구성된 숫자 문자열(예:"123" )을 숫자로 바꿀려면 다음과 같이 해야합니다. (물론 한글자일때도 다음과 같이 해도 됩니다.)

    public class Example2 {
      public static void main(String[] args) {
        int value = Integer.parseInt("123");
        System.out.println("value="+value);
      }
    }
    

    .

    하나더, 입력받은 정수(int)를 각 자릿수로 분해하는 것이 목적이라면... (문자열을 사용하지 않고)

    public class Example3 {
      public static void main(String[] args) {
        int input =152496;
        // 자릿수 계산하기
        int n,temp;
        n =0;
        temp = input;
        while(temp!=0) {
          n++;
          temp /= 10; // temp = temp / 10; 
        }
        // 배열 생성
        int[] A= new int[n];
        // 각 자릿수를 분해하기
        temp = input;
        for(int i=A.length-1;i>=0;i--) {
          A[i] = temp %10; // 배열의 맨 뒤에서부터, 입력받은 수의 제일 낮은 자리(1의자리수)를 나머지연산을 통해 저장.
          temp /= 10; // 10으로 나누어 10의자리수가 1의자리가 되도록 함.
        }
        //출력
        for(int i=0;i<A.length;i++) {
            System.out.println("A["+i+"]="+A[i]);
        }
      }
    }
    
    • 감사합니다. 정수형 값을 받아서 어떻게 쪼갤지 생각하고 있었는데 해답을 주셔서 감사합니다. 문정훈 2016.4.28 14:53
  • public class Main {
    
         public static void main(String[] args){
    
             Scanner s = new Scanner(System.in);
    
             //변수 선언
             int num;
             int count = 0;
             int arrCount = 0;
             num=s.nextInt();
    
    
            //정수를 나눌 10의 배수 구하기
             int i = 1;
             while(i<=num){
                i = i*10;
                count++;
             }
             i = i/10;
    
    
            //배열 선언 후 위에서 구한 i로 정수 나눠 배열에 담기
             int[] arr = new int[count];
             while(num>0){
             arr[arrCount] = num/i;
             num = num%i;
             i = i/10;
             arrCount++;
             }
            //출력
            for(int j = 0 ; j<arr.length;j++){
                 System.out.println(arr[j]);
        }
    
    }
    

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.