자바를 공부하고 있습니다. 정수를 배열로 저장을 어떻게 하죠?
조회수 14072회
정수 하나를 받아서 오름차순이나 내림차순으로 정렬을 할려구 합니다. 만약 제가 정수 152496를 받으면 이 정수를 배열 A[]에 A[0]=1 A[1]=5 A[2]=2 A[3]=4 A[4]=9 A[5]=6 이렇게 저장하는 방법이 있을까요?
아니면 다른 방법으로도 정수를 정렬하는 방법이 있을까요?
2 답변
-
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]); } } }
-
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]); } }
-
(•́ ✖ •̀)
알 수 없는 사용자 -
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
-
댓글 입력