본문 바로가기
수업 문제(국비 지원)/Java

[JAVA] 2022.08.29 - java 배열, 정렬

by byeolsub 2023. 4. 27.
10진수를 2,8,10,16 진수로 변경하기
[결과]
10진수 값을 입력하세요
16

16의 2진수 :10000
16의 8진수 :20
16의 10진수 :16
16의 16진수 :10
package chap5;

import java.util.Scanner;

public class Test8 {
	public static void main(String[] args) {
		int [] binary = new int[32];
		System.out.println("10진수 입력");
		Scanner scan = new Scanner(System.in);
		int num = scan.nextInt();
		int divnum = num;
		int index=0;
		
		
		while(divnum!= 0) {
			binary[index++] =divnum%2;
			divnum/=2;
		}
		System.out.print(num+"의 2진수:");
		for(int i = index-1; i>=0;i--) {
			System.out.print(binary[i]);
		}
		System.out.println();
		
		int octal[] = new int[32];
		divnum = num;
		index=0;
		while(divnum!= 0) {
			octal[index++] =divnum%8;
			divnum/=8;
		}
		System.out.print(num+"의 8진수:");
		for(int i = index-1; i>=0;i--) {
			System.out.print(octal[i]);
		}
		System.out.println();
		
		int decimal[] = new int[32];
		divnum = num;
		index=0;
		while(divnum!= 0) {
			decimal[index++] =divnum%10;
			divnum/=10;
		}
		System.out.print(num+"의 10진수:");
		for(int i = index-1; i>=0;i--) {
			System.out.print(decimal[i]);
		}
		System.out.println();
		
		String nums = "0123456789ABCDEF";
		char[] numarr = nums.toCharArray();
		char[] hexa = new char[10];
		divnum=num;
		index=0;
		
		while(divnum!= 0) {
			hexa[index++] = numarr[divnum%16];
			divnum/=16;
		}
		System.out.print(num+"의 16진수:");
		for(int i = index-1; i>=0;i--) {
			System.out.print(hexa[i]);
		}
		System.out.println();
	}
}

1부터 100까지 임의의 수 10개를  배열에 저장하고, 정렬하여 출력하기
정렬 : java.util.Arrays.sort(arr)

[결과]
9,55,56,65,70,72,80,88,89,96,
package chap5;

import java.lang.reflect.Array;
import java.util.Arrays;

public class Test9 {
	public static void main(String[] args) {
		int[]arr = new int[10];
		
		for(int i=0;i<arr.length;i++) {
			arr[i] = (int)(Math.random()*100+1);
		}
		Arrays.sort(arr);
		for(int i=0;i<arr.length;i++) {
			System.out.print(arr[i]+",");
		}
		System.out.println();
	}
}

int[][] score = {
			{90,80,70},
			{95,85,75},
			{70,80,75},
			{75,70,85},
			{70,75,80}
	}; 
* score 배열보다 가로 세로가 1씩 더큰 배열 result 배열 생성하기.
* score 배열의 내용을 result에 저장하고,
* 각 추가된 행과 열에는 각 행과 열의 합을 저장하고, result 배열의 내용 출력하기
[결과]
1번:	90	80	70	240	
2번:	95	85	75	255	
3번:	70	80	75	225	
4번:	75	70	85	230	
5번:	70	75	80	225	
합계	400	390	385	1175	
package chap5;

public class Test11 {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int[][] score = {
				{90,80,70},
				{95,85,75},
				{70,80,75},
				{75,70,85},
				{70,75,80} //5열3행 출력할때는 6열4행
		};
		int maxcol =0;
		for(int i=0;i < score.length;i++) {
			if(maxcol < score[i].length)
				maxcol = score[i].length;
		}
		int [] colsum = new int[maxcol];//열의합
		int sum =0; // 행의합
		for (int i = 0; i < score.length+1; i++) {
			System.out.print(i+"번:\\t");
            for (int j = 0; j < score[i].length; j++) {
				sum += score[i][j];
				colsum[j] += score[i][j];
                System.out.print(score[i][j] +"\\t");
            }
			System.out.println(sum);
		}
		for(int i=0;i<colsum.length;i++) {
			System.out.print(colsum[i]+"\\t");
		}
		System.out.println();
	}
}