πŸ‘¨‍πŸ’» Web Development/Java

[Day12] Java 12 - λ°°μ—΄μ˜ ν™œμš©

Kim_dev 2022. 9. 1. 22:24

[Day12] Java 12 [8/24]

 

1.  λ°°μ—΄, 반볡문, μž…λ ₯

package days12;

import java.util.Random;
import java.util.Scanner;

/**
 * @author k≡n¡k
 * @date 2022. 8. 24. - μ˜€μ „ 10:34:46
 * @subject  λ°°μ—΄~ 
 * @content 
 *
 */
public class Ex02 {

	public static void main(String[] args) {
		// ν•œ ν•™μƒμ˜ 이름,κ΅­μ–΄,μ˜μ–΄,μˆ˜ν•™,총점,평균,λ“±μˆ˜λ₯Ό μ €μž₯ν•˜λŠ” μ½”λ”©~ 
		//String name;
		//int kor, eng, mat, tot, rank;
		//double avg;
		
		// ν•œ λ°˜μ— 30λͺ… 학생
		// 이름,κ΅­μ–΄,μ˜μ–΄,μˆ˜ν•™,총점,평균,λ“±μˆ˜λ₯Ό μ €μž₯ν•˜λŠ” μ½”λ”©
		// String name1, name2,name3,name4~ name30;
		// int kor1, kor2~ kor30;
		// 30개
		// λ°°μ—΄ μ‚¬μš©. 
		
		final int STUDENT_COUNT = 30;
		
		String [] names = new String[STUDENT_COUNT];
		int [] kors = new int[STUDENT_COUNT];
		int [] engs = new int[STUDENT_COUNT];
		int [] mats = new int[STUDENT_COUNT];
		int [] tots = new int[STUDENT_COUNT];
		int [] ranks = new int[STUDENT_COUNT];
		double [] avgs = new double[STUDENT_COUNT];
		
		int count = 0; // == μž…λ ₯받은 학생 수 (의미)     index λ³€μˆ˜ λ™μΌν•˜λ‹€. 
		char con = 'y'; 
		Scanner scanner = new Scanner(System.in); 
		 
		do {
			// 11:05 μˆ˜μ—… μ‹œμž‘~ 
			System.out.printf("> [%d]번 학생 이름,κ΅­,영,수 μž…λ ₯ ? ", count+1);
			
			String name = getRandomName(); // scanner.next();
			int kor = getRandomScore(); //  scanner.nextInt();
			int eng = getRandomScore(); //  scanner.nextInt();
			int mat = getRandomScore(); //  scanner.nextInt();
			
			int tot = kor + eng + mat;
			double avg = (double)tot / 3;
			int rank = 1;
			
			// 
			names[count] = name;
			kors[count]=kor;
			engs[count]=eng;
			mats[count]=mat;
			tots[count]=tot;
			avgs[count]=avg;
			ranks[count]=rank;
			
			count++;  // 2
			System.out.print("> 학생 μž…λ ₯ 계속 ν• λž˜ ? ");
			con =  scanner.next().charAt(0);
		} while (   Character.toUpperCase( con )  == 'Y'  );
	 
	 
		
		System.out.printf("총 ν•™μƒμˆ˜ : %d\n" , count );
		
		// 12:05λΆ„ μˆ˜μ—…μ‹œμž‘~
		// 전체 ν•™μƒμ˜ λ“±μˆ˜ 처리. - 1번
		// λ“±μˆ˜μ²˜λ¦¬ν•˜λŠ” ν•¨μˆ˜λ₯Ό λ§Œλ“€μ–΄μ„œ μ²˜λ¦¬ν•˜μ„Έμš”. 
		// 1) κΈ°λŠ₯  2) λ§€κ°œλ³€μˆ˜ ?  3) 리턴값(λ¦¬ν„΄μžλ£Œν˜•)
		ranks = getRank(tots, ranks, count);
		
		// 학생 정보 좜λ ₯
		for (int i = 0; i < count ; i++) {
			System.out.printf("%s\t%d\t%d\t%d\t%d\t%.2f\t%d\n", 
					names[i], kors[i], engs[i],mats[i], tots[i], avgs[i], ranks[i]
					);
		}

		
		// toUpperCase() ν•¨μˆ˜λŠ” λŒ€λ¬Έμžλ‘œ λ³€ν™˜ν•΄μ„œ λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜ 
		// toLowerCase()          μ†Œλ¬Έμž
		//System.out.println(  Character.toUpperCase( 'y')  );  //   'Y'
		//System.out.println(  Character.toUpperCase( 'Y')  ); //    'Y'
	} // main
	
	public static int []  getRank( int [] tots, int [] ranks , int count) {
		for (int i = 0; i < count; i++) {        // i  λ“±μˆ˜λ§€κΈΈ 학생 
			ranks[i] = 1; // μ€‘μš”
			for (int j = 0; j < count; j++) {     
				if( tots[i] < tots[j] ) ranks[i]++;	
			} 
		}
		return ranks;
	}
	
	// 0~100 점수 
	public static int getRandomScore() {
		Random rnd  = new Random();
		return rnd.nextInt( 101 );  // 0<=   int  <101
	}
	
	// 이름 
	public static String getRandomName() {
		String name = null;
		Random rnd  = new Random();
		// 'A'~'Z'  λ¬΄μž‘μœ„ 5개 문자 λ°œμƒ -> String name λ³€ν™˜
		// 65~90
		char [] names = new char[5];		
		for (int i = 0; i < names.length; i++) {
			names[i] =  (char) (rnd.nextInt(26)+65);
		}
		
		// char [] -> String λ³€ν™˜
		// name = String.valueOf(names);
		name = new String( names ); 
		
		return name;
	}

} // class

2.  μš”μ†Œ μΆ”κ°€ / μ‚­μ œ / μ‚½μž…

	public static void main(String[] args) {
		// λ°°μ—΄ μ΄ˆκΈ°ν™”.
		int [] m = { 1,2,3,4,5};
		
		System.out.println( Arrays.toString( m ) );
		
		// 1. μš”μ†Œ μΆ”κ°€
		int index = 5;
		if( index == m.length ) m = Ex01.increaseArraySize(m, 3);
		m[index] = 6;
		System.out.println( Arrays.toString( m ) );
		index++;
		
		// 2. μš”μ†Œ μ‚­μ œ     - index = 2
		// [1, 2, (3), 4, 5, 6, 0, 0]
		// [1, 2, 4, 5, 6, 0, 0,0]
		for (int i = 3; i < m.length; i++) {
			m[i-1]= m[i];
		}
		m[m.length-1] = 0;
		System.out.println( Arrays.toString( m ) );
		index--;
		
		// 3. μš”μ†Œ μ‚½μž…
		// [1, 2, 4, 5, 6, 0, 0, 7]
		// 1)  λ°°μ—΄ 크기 증가 체크
		// 2) μ‚½μž…ν•  μœ„μΉ˜ - 3   ,  100 μ •μˆ˜ μ‚½μž…
		// [1, 2, 4 , (100), 5, 6, 0, 0]
		
		// if(  m[m.length-1]  != 0  )  m = Ex01.increaseArraySize(m, 3);
		// κ°€μ • 0
		// [1, 2, 4, 5, 6, 0, 0, 0]
		//	[1, 2, 4, 100, 5, 5, 5, 5]

		if( index == m.length ) m = Ex01.increaseArraySize(m, 3);

		for (int i = index -1 ; i >= 3 ; i--) {
			m[i+1] = m[i]; 
		}
		
		m[3]=100;
		System.out.println( Arrays.toString( m ) );
		index++;
		
		
		m[0] = 1000;
		
	} // main

3.  μ΅œλŒ€κ°’, μ΅œμ†Œκ°’ μ°Ύμ•„ 좜λ ₯

public static void main(String[] args) {
		// λ²”μœ„ 0~100 μ •ν•΄μ Έ 있으면 X 
		int [] score = { 79, 88, 91, 33, 100, 55, 95 };		
		// 점수    : μ΅œλŒ€κ°’, μ΅œμ†Œκ°’   μ°Ύμ•„μ„œ 좜λ ₯.
		// int max = -1, min = 101; 
	    int max , min;
	    max = min = score[0];  // 79
	    
	    for (int i = 1; i < score.length; i++) {
			if( max < score[i])   max = score[i];
			else if( min > score[i] ) min = score[i];
		}
	    
	    System.out.printf("μ΅œλŒ€κ°’:%d, μ΅œμ†Œκ°’:%d\n", max, min);		
		

	} // main

4.  μΉ΄λ“œμ„žκΈ°

public static void main(String[] args) {
		// μΉ΄λ“œ μ„žκΈ°,  ν™”νˆ¬ μ„žκΈ°
		int [] m = new int[10];
		for (int i = 0; i < m.length; i++) {
			m[i] = i+1;
		}

		System.out.println( Arrays.toString( m ) );

		shuffle(m); // μ •λ‹΅
		
		System.out.println( Arrays.toString( m ) );


	} // main

	// 랜덀 μ„žκΈ° ν•¨μˆ˜
	public static void shuffle(int [] m) {
		// 숫자 μ„žκΈ°
		Random rnd = new Random();
		int a, b, temp;
		for (int i = 0; i < 100; i++) {
			a =  rnd.nextInt(10);  // 4
			b =  rnd.nextInt(10);  // 8			
			temp = m[a];
			m[a] = m[b];
			m[b] = temp;
		}		
		 
	}

5.  κ°€λ³€ λ°°μ—΄

- 닀차원 λ°°μ—΄μ—μ„œ 전체 λ°°μ—΄ 차수 쀑에 λ§ˆμ§€λ§‰ 차수의 길이λ₯Ό μ§€μ •ν•˜μ§€ μ•Šμ€ λ°°μ—΄

- 좔후에 κ°œλ°œμžκ°€ λ§ˆμ§€λ§‰ 차수λ₯Ό 지정할 μ˜λ„

int [][] m = new int[3][]; // κ°€λ³€λ°°μ—΄               μ—΄ == λ§ˆμ§€λ§‰μ°¨μˆ˜
		m[0] = new int[10];
		m[1] = new int[5];
		m[2] = new int[7];

 

6. 랜덀 인덱슀 ν†΅ν•΄μ„œ 문제 랜덀으둜 λ‚˜μ˜€κ²Œ ν•˜κΈ°

public static void main(String[] args) {
		// μ •λ³΄μ²˜λ¦¬κΈ°μ‚¬
		// [문제] -> μ œμ–΄λ¬Έ(ν•˜2쀑2상1),μ—°μ‚°μž,λ°°μ—΄ ->
		// μ˜μ–΄λ‹¨μ–΄ -> 좜λ ₯ : 뜻  μ²΄ν¬ν•˜λŠ” μ½”λ”©.   - λ°°μ—΄
		String [][] words = {
				{"chair","의자"},  // 각 ν–‰λ§ˆλ‹€   0μ—΄ μ˜μ–΄λ‹¨μ–΄, 1μ—΄ 뜻
				{"computer", "컴퓨터"},
				{"integer", "μ •μˆ˜"} 
		};		
		// λžœλ€ν•˜κ²Œ 1문제 좜제 
		// ν–‰ 갯수 :3  ==   3문제
		// ν–‰ 갯수 λžœλ€ν•˜κ²Œ λ°œμƒ     0  , 1 , 2
		Random rnd = new Random();
		Scanner scanner = new Scanner(System.in);
		
		// 단어 문제 10개 -> μ •λ‹΅ 6개   생각(κ΅¬ν˜„)
		char con = 'y';
		do {
			
			 int rowIndex = rnd.nextInt(3);
			 String λ¬Έμ œλ‹¨μ–΄ = words[rowIndex][0];
			 System.out.printf("\"%s\" λ‹¨μ–΄μ˜ λœ»μ„ μ μœΌμ„Έμš” ? ", λ¬Έμ œλ‹¨μ–΄ );
			 String word= scanner.next();
			 
			 if( words[rowIndex][1].equals(word) ) System.out.println("μ •λ‹΅");
			 else System.out.println("μ˜€λ‹΅");
			 
			 System.out.print("> 문제 κ³„μ†ν• λž˜? ");
			 con = scanner.next().charAt(0);
		} while ( Character.toUpperCase(con) =='Y');
		
		System.out.println("end");