수업

+14 메소드 활용

hs_developer 2022. 5. 20. 17:51

p264

 

1. 임의로 알파벳 5개 받아서 정렬 → ASC, DESC

 

Select sort

[X, U, Z, O, H]
[H, X, Z, U, O]
[H, O, Z, X, U]
[H, O, U, Z, X]
[H, O, U, X, Z]
[H, O, U, X, Z]
	// Call By Reference(권장) → 배열, 클래스만 가능
	static void getRand(char[] alpha)
	{
		for(int i=0; i<alpha.length; i++)
		{
			alpha[i] = (char)((int)(Math.random()*26)+65);
		}
	}
	
	// 다른 방법
	static char[] getRand()
	{
		char[] alpha = new char[5];
		for(int i=0; i<alpha.length; i++)
		{
			alpha[i] = (char)((int)(Math.random()*26)+65);
		}
		return alpha;
	}
	
	// 처리(정렬) Select sort
	
	// 리턴 형 
	static char[] sort(char[] alpha)
	{
		for(int i=0; i<alpha.length-1; i++)
		{
			for(int j=i+1; j<alpha.length; j++) // i보다 1칸 앞에서 비교 (i+1)
			{
				if(alpha[i]>alpha[j])
				{
					char temp = alpha[i];
					alpha[i] = alpha[j];
					alpha[j] = temp;
				}
			}
			System.out.println(Arrays.toString(alpha));
			
		}
		
		return alpha; // 변경된 alpha
	}
	
	// 다른 방법
	static void sort2(char[] alpha)
	{
		for(int i=0; i<alpha.length-1; i++)
		{
			for(int j=i+1; j<alpha.length; j++) // i보다 1칸 앞에서 비교 (i+1)
			{
				if(alpha[i]>alpha[j])
				{
					char temp = alpha[i];
					alpha[i] = alpha[j];
					alpha[j] = temp;
				}
			}
			System.out.println(Arrays.toString(alpha));
			
		}
	}
	
	
	// 출력
	static void process()
	{
		// 다른 방법
		char[] alpha = getRand();
		
//		char[] alpha = new char[5];
//		getRand(alpha);
		
		System.out.println(Arrays.toString(alpha));
		
//		char[] result = sort(alpha);
		sort2(alpha); // 다른 방법
		System.out.println(Arrays.toString(alpha));
	}
	
	public static void main(String[] args) {
		
		process();
	}

 

 

2. 임의 정수 5개 합 구하기

 

[51, 7, 38, 68, 66]
합: 230
	static void getRand(int[] arr)
	{
		for(int i=0; i<arr.length; i++)
		{
			arr[i] = (int)(Math.random()*100)+1;
		}
	}
	
	static int sum(int[] arr)
	{
		int s=0;
		for(int i:arr)
		{
			s+=i;
		}
		return s;
	}
	
	static void process()
	{
		int[] arr = new int[5];
		
		getRand(arr);
		System.out.println(Arrays.toString(arr));
		
		int s = sum(arr);
		System.out.println("합: " + s);
		
	}
	
	public static void main(String[] args) {
		
		process();
	}
	static int[] getRand()
	{
		int[] arr = new int[5]; // **
		
		for(int i=0; i<arr.length; i++)
		{
			arr[i] = (int)(Math.random()*100)+1;
		}
		
		return arr;
	}
	
	// 정수 5개 더하기
	static int sum(int[] arr)
	{
		int result=0;
		
		for(int i:arr)
		{
			result+=i;
		}
		
		return result;
	}
	
	// 결과 창에 띄울 것
	static void process()
	{
		
		System.out.println(Arrays.toString(getRand()));
		
		int s = sum(getRand());
		System.out.println("합: " + s);
		
		
	}
	
	public static void main(String[] args) {
	
		process();
	}

 

 

 

 

3. 배열 → 난수

 

Bubble sort

 

변경 전: 
[0, 0, 0, 0, 0]
변경 후: 
[5, 13, 66, 86, 29]
정렬 후: 
[5, 13, 29, 66, 86]
	static void getRand(int[] arr)
	{
		for(int i=0; i<arr.length; i++)
		{
			arr[i] = (int)(Math.random()*100)+1;
		}
	}
	
	static void sort(int[] arr)
	{
		for(int i=0; i<arr.length-1; i++)
		{
			for(int j=0; j<arr.length-1-i; j++)
			{
				if(arr[j]>arr[j+1]) // 방향에 따라 ASC, DESC 여부 변경
				{
					int temp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = temp;
				}
			}
		}
	}
	
	static void process()
	{
		int[] arr = new int[5];
		
		System.out.println("변경 전: ");
		System.out.println(Arrays.toString(arr));
		
		System.out.println("변경 후: ");
		getRand(arr);
		System.out.println(Arrays.toString(arr));
		
		System.out.println("정렬 후: ");
		sort(arr);
		System.out.println(Arrays.toString(arr));
		
	}
	
	public static void main(String[] args) {
		process();
	}

 

ASC, DESC 쉬운 방법

ASC
Arrays.sort(arr);

DESC
for(int i=arr.length-1; i>=0; i--)
{
    System.out.print(arr[i]+ " ");
}