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


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

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

  • 2016년 04월 28일에 작성됨
    C,C++,JAVA

조회수 470


2 답변


좋아요
0
싫어요
채택취소하기
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년 04월 28일에 수정됨
    리눅스(유닉스) 기반의 시스템에서 웹 서비스를 개발하고 있습니다.
  • 2016년 04월 28일에 작성됨
    리눅스(유닉스) 기반의 시스템에서 웹 서비스를 개발하고 있습니다.

  • 감사합니다. 정수형 값을 받아서 어떻게 쪼갤지 생각하고 있었는데 해답을 주셔서 감사합니다.    문정훈   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]);
    }

}
  • 2016년 05월 03일에 수정됨
    초보 프로그래머
  • 2016년 05월 03일에 작성됨
    초보 프로그래머

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close