Notice
Recent Posts
Recent Comments
Link
«   2025/09   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Archives
Today
Total
관리 메뉴

스포츠마케터의 초보 개발자 도전기

JAVA study 06 본문

develop/JAVA

JAVA study 06

teammate brothers 2024. 3. 5. 17:19

배열 Array

package ex1_single_array;

public class Ex1_array {
	public static void main(String[] args) {
		
		//배열 : '같은 자료형끼리 모아둔 하나의 묶음'
		//효율적인 자료관리를 위해 반드시 필요!
		
		int su1 = 100;
		int su2 = 200;
		int su3 = 300;
		int su4 = 400;
		
		System.out.println(su1);
		System.out.println(su2);
		System.out.println(su3);
		System.out.println(su4);
		
		System.out.println("---------------------");
		
		//위의 코드를 배열을 이용하여 생성해보자
		//1) 배열 선언
		
		int[] su;
		
		//2) 배열 생성
		su = new int[5]; //배열 생성 후 프로그램 종료까지 인덱스 추가할 수 없음. 인덱스 번호올려 추가
		
		//3) 배열의 초기화
		su[0] = 100;
		su[1] = 200;
		su[2] = 300;
		su[3] = 400;
		//su[4] = 500; //배열 생성 후 프로그램 종료까지 인덱스 추가할 수 없어 오류 발생
		
		//배열의 존재하지 않는 인덱스로 접근하는 것은 JAVA에서는 불가능
		
		System.out.println(su[0]);
		System.out.println(su[1]);
		System.out.println(su[2]);
		System.out.println(su[3]);
		
		System.out.println("--------------------");
		
		//n차원 배열의 모든 값을 보려면 n중 for문이 필요		
		for(int i = 0; i < su.length; i++) { //인덱스 번호 변화될때 자동변화하려면 i < su.length
			System.out.println(su[i]);
		}//for
		
		int [] num = new int[3];
		//num[0] ~ [2]에 10, 20, 30 같이 규칙성을 가지는 값 추가도 한번에 가능
				
		for(int i = 0; i < num.length; i++) {
			num[i] = (i + 1) * 10;
			System.out.println(num[i]);
		}
		
	}//main
}
package ex1_single_array;

public class Ex2_array {
	public static void main(String[] args) {
		
		int[] arr = new int[3];
		arr[0] = 7;
		arr[1] = 15;
		arr[2] = 30;
		
		//배열의 선언 생성 초기화를 한번에
		int[] arr2 = {7, 15, 30};
		
		for(int i = 0; i < arr2.length; i++) {
			System.out.println(arr2[i]);
		}
		
		
	}//main
}
package ex1_single_array;

public class Ex3_array {
	public static void main(String[] args) {
		
		char[] ch = new char[4];
		ch[0] = 'J';
		ch[1] = 'A';
		ch[2] = 'V';
		ch[3] = 'A';		
		//ch[4] = '!';		
		
		char[] chArr = {'J','A','V','A'};
		
		// 일반 for문은 특정값만 출력하거나 전체값을 출력하거나 하는 것이 가능
		for (int i = 0; i < chArr.length; i++) {
			System.out.print(chArr[i]);
		}
		
		System.out.println();
		
		// 개선된 for문(향상된 루프...) 특정배열의 모든 값을 출력
		for(char c : chArr) {
			System.out.print(c);
		}
		
	}//main
}

 

예제1)

package ex2_array_work;

import java.util.Scanner;

public class Ex1_work {
	public static void main(String[] args) {
		
		//ex 배열의 길이 : 5
		//순차적으로 A-E... 자동 입력
		//인덱스네 전체 출력
		
		Scanner sc = new Scanner(System.in);
		System.out.println("입력 : ");
		int a = sc.nextInt();
		
		char[] arr = new char[a];
		char alpha = 'A';
		
		for (int i = 0; i < arr.length; i++) {
			//arr[i] = alpha++;
			//System.out.print((arr)[i]);
			System.out.print(arr[i] = alpha++);
		}
		
		System.out.println();
		
		System.out.println("---String 배열의 초기값---");
		String[] sArr = new String[2];
		sArr[0] = null;
		sArr[1] = ""; //실무에서는 null 보다 ""를 선호
		
		System.out.println("null로 초기화 : " +sArr[0]);
		System.out.println("빈값(\"\")으로 초기화 : " +sArr[1]);
		
		//String ab = null; 으로 하면 null안녕으로 출력
		String ab = ""; //안녕으로 출력
		ab += "안녕";
		System.out.println(ab);
		
	}//main
}

 

예제2)

package ex2_array_work;

public class Ex2_work {
	public static void main(String[] args) {
		
		//배열 arr에 담긴 모든 값의 합을 출력
		
		int[] arr = {15, 22, 17, 40 ,51};
		int sum = 0;
		
		//기존 for문으로
		for (int i = 0; i < arr.length; i++) {
			sum += arr[i];
		}
		System.out.println(sum);
		
		//향상된 for문으로

		sum = 0; //sum값 초기화 시키고
		
		//시작!
		for (int s : arr) {
			sum += s;
		}
		System.out.println(sum);
	}//main
}

 

예제3)

package ex2_array_work;

public class Ex3_work {
	public static void main(String[] args) {
		
		//배열 arr에 담긴 값 중, 가장 큰 값을 출력
		
		int [] arr = {4, 13, 7, 19, 1, 15};
		int num = arr[0];

		for (int i = 1; i < arr.length; i++) {
			
			if (arr[i] > num) {
					num = arr[i];
					
				}//if
			
		}//for
		System.out.println(num);
		
		
		//향상된 for
		num = arr[0]; //초기화
		
		for (int a : arr) {
			if (a > num) {
				num = a;
			}
		}
		System.out.println(num);
		
	}//main
}

 

예제4)

package ex2_array_work;

public class Ex4_work {
	public static void main(String[] args) {
		
		//배열 arr이 가진 내용 들을 오름차순으로 정렬하여 출력
		int [] arr = {4, 13, 7, 19, 1, 15};
		
		
		for (int i = 0; i < arr.length; i++) {
						
			for (int j = i; j < arr.length; j++) { 
			
				if (arr[i] > arr[j]) {
				
				int num3 = arr[i];
				arr[i] = arr[j];
				arr[j] = num3;
				
				}//if
				
			}//for1

			System.out.print(arr[i] + " ");
				
			}//for2

		
		System.out.println();
		System.out.println("--------------");
		
		//teacher code
		
		for(int i = 0; i < arr.length; i++) {
	
			for(int j = i; j < arr.length; j++) {
				
				if( arr[j] < arr[i]) {
					int tmp = arr[i];
					arr[i] = arr[j];
					arr[j] = tmp;
					
				}//if
				
			}//inner

		}//outer
		for(int i = 0; i < arr.length; i++) {
			System.out.print(arr[i] + " ");
		}
		
	}//main
}

 

예제5)

package ex2_array_work;

import java.util.Scanner;

public class Ex5_work {
	public static void main(String[] args) {
		
		//배열의 크기를 결정할 값을 입력받고, 배열의 크기만큼 모든 index에
		//키보드에서 입력받은 정수를 채워넣는다.
		//최종적으로 완료된 배열안에서 홀수와 짝수의 갯수를 찾아 출력
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("배열의 크기를 정하세요 : ");
		int num = sc.nextInt();
		
		int [] size = new int[num];
		
		//키보드에서 배열의 크기만큼 입력 받기
		System.out.printf("%d 개의 정수를 입력하세요\n", num);
		
		for (int i = 0; i < size.length; i++) {

			size[i] = sc.nextInt();
		
		}
		
		//입력한 n개의 숫자를 보자
		for(int c : size) {
			System.out.print(c + " ");
		}
		
		
		//배열 안에서 홀수와 짝수 수 찾기
		int odd = 0;
		int even = 0;
		
		for (int i = 0; i < size.length; i++) {
			if (i % 2 != 0) {
				odd++;
			}else {
				even++;
			}
		}//for
		
		System.out.printf("홀수는 %d개, 짝수는 %d개 입니다.", odd, even);

		
	}//main
}

 

과제) array를 사용하여 야구게임 만들기

package ex2_array_work;

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

public class Ex6_baseball_work {
	public static void main(String[] args) {

		// 이전에 만들었던 숫자야구 코드를 배열을 이용하여 변경해보자

		Scanner sc = new Scanner(System.in);

		// 변수지정
		int[] com = new int[3];
		int[] user = new int[3];

		// 랜덤 변수가 겹치지 않게 작업
		do {

			com[0] = new Random().nextInt(9) + 1;
			com[1] = new Random().nextInt(9) + 1;
			com[2] = new Random().nextInt(9) + 1;

		} while (com[0] == com[1] || com[0] == com[2] || com[1] == com[2]);

		// 변수 출력 (확인용이고 나중에 지우자)
		for (int c : com) {
			System.out.print(c + " ");
		}
		System.out.println();

		int counter = 0;
		while (true) {
			counter++;

			
			// 유저 숫자 입력
			System.out.print("한자리 숫자를 세개를 겹치지 않게 입력하세요 : ");
			int userNum = sc.nextInt();

			// 유저 입력 숫자를 배열로 바꿔주기 (100의 자리, 10의 자리, 1의 자리)
			user[0] = userNum / 100;
			user[1] = userNum / 10 - (user[0] * 10);
			user[2] = userNum / 1 - (user[0] * 100) - (user[1] * 10);

			// 유저입력값이 제대로 출력되는지 보자 (나중에 지우자)
			/*for (int u : user) {
				System.out.printf("%d\n", u);
			}*/

			// 유저 숫자 중복시 재입력 알림
			if (user[0] == user[1] || user[1] == user[2] || user[2] == user[0]) {
				System.out.println("세 정수를 다르게 입력하세요.");
				continue;
			}

			// 스트라이크, 볼 초기화
			int strike = 0;
			int ball = 0;

			// 유저 숫자와 com 숫자 비교
			for (int i = 0; i < com.length; i++) {
				for (int j = 0; j < user.length; j++)
					if (com[i] == user[j]) {
						if (i == j) {
							strike++;
						}else {
							ball++;
						}
					}
			}

			// 판단
			if (strike == 3) {
				System.out.printf("%d 번만에 정답을 맞췃습니다.", counter, "정답-%d", userNum);
				break;

			} else {
				if (strike > 0 || ball > 0) {
					System.out.println(strike + "S," + ball + "B");
				} else {
					
					System.out.println("out!");
				}
			}
		} // while

	}// main
}

 

과제) array를 사용하여 야구게임 만들기 (teacher's code)

package ex2_array_work;

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

public class Ex6_baseball_tCode {
	public static void main(String[] args) {

		// 이전에 만들었던 숫자야구 코드를 배열을 이용하여 변경해보자

		Scanner sc = new Scanner(System.in);

		// 컴퓨터 지정 난수의 변수지정
		int[] com = new int[3];

		// 랜덤 변수가 겹치지 않게 작업
		do {

			com[0] = new Random().nextInt(9) + 1;
			com[1] = new Random().nextInt(9) + 1;
			com[2] = new Random().nextInt(9) + 1;

		} while (com[0] == com[1] || com[0] == com[2] || com[1] == com[2]);

		int cnt = 0; // 횟수체크

		while (true) {
			cnt++;

			System.out.print("예측값 세자리를 입력 - ");
			int number = sc.nextInt();
			// 입력된 세자리를 배열에 넣기
			int[] user = { number / 100, // user[0]
					number % 100 / 10, // user[1]
					number % 100 % 10 };// user[2]

			// 스트라이크, 볼 카운터 초기화
			int strike = 0;
			int ball = 0;

			// 경우의 수
			for (int i = 0; i < com.length; i++) {

				for (int j = 0; j < com.length; j++) {

					if (i == j) {
						if (com[i] == user[i]) {
							strike++;
						}
					} else {
						if (com[i] == user[i]) {
							ball++;
						}
					}
				}//inner
				
			}//outer

			//정답처리
			if ( strike == 3) {
				System.out.println(cnt + "회 만에 정답을 맞췄습니다.");
				break;
				
			} else {
				
				if( strike > 0 || ball > 0) {
					System.out.printf("%d S, %d B", strike, ball);					
				}else {
					System.out.println("아웃입니다.");
					
				}
			}
		} // while

	}// main
}

 

예제) 성적 구하기

package ex2_array_work;

import java.util.Scanner;

public class Ex7_work {
	public static void main(String[] args) {

		// 키보드에서 입력받은 값만큼의 배열을 생성하고
		// 학생들의 성적을 입력받는다.
		// 입력된 모든 학생들을 기반으로 평균성적 이상인 학생들의 목록과
		// 평균이상인 학생들의 수를 출력
		// --------예시결과---------
		// 학생 수 : 3
		// 학생 1의 성적 : 90
		// 학생 2의 성적 : 75
		// 학생 3의 성적 : 84
		// .....
		// 평균성적 : 83.0
		// --평균이하
		// 학생1
		// 학생3
		// 평균이상 학생 수 :2

		Scanner sc = new Scanner(System.in);

		// 학생 수 입력
		System.out.print("학생 수 입력 : ");
		int s = sc.nextInt();
		int[] student = new int[s];

		// 학생 점수 입력
		for (int i = 0; i < student.length; i++) {
			System.out.printf("학생 %d의 성적을 입력하세요 : ", i + 1);
			student[i] = sc.nextInt();
		}
		System.out.println("--입력완료--");

		// 학생의 성적 평균
		int sum = 0;
		for (int i = 0; i < student.length; i++) {
			sum += student[i];
		}
		float avg = (float) sum / s;
		System.out.printf("평균 성적 : %.1f", avg);

		System.out.println("--평균 이상인 학생----");

		// 평균이하 학생
		for (int i = 0; i < student.length; i++) {
			if (student[i] <= avg) {

				System.out.printf("=> 학생 %d\n", i + 1);
			}
		}

		// 평균이상 학생 수
		int avgCount = 0;
		for (int i = 0; i < student.length; i++) {
			if (avg <= student[i]) {
				avgCount++;
				System.out.printf("평균이상의 학생수 : %d", avgCount);
			}
		}

	}// main
}

 

예제) 동전 갯수 구하기

package ex2_array_work;

import java.util.Random;

public class Ex8_work {
	public static void main(String[] args) {
		
		//변수 money를 만들고 10~5000사이의 난수를 넣는다
		//단, 발생된 난수는 3450, 2100과 같이 1의 자리가 반드시 0이되어야한다.
		//500, 100, 50, 10원짜리 동전이 각각 몇개씩 필요한지 출력
		//가능한 적은 수의 동전을 사용해야 함
			
		
		int[] coin = {500, 100, 50, 10};
		
		//난수 10~5000원 사이의 난수 발생
		int money = 0;
		for (int i = 0; i < 5000; i++) {
			money = new Random().nextInt(5001);
			if(money % 10 == 0) {
				System.out.println(money);
				break;
			}
		}
		
		//동전 몇개 필요한지 계산
		int[] count = {money / coin[0], 
					   money % coin[0] / coin[1],
					   money % coin[0] % coin[1] / coin[2],
					   money % coin[0] % coin[1] % coin[2] / coin[3]};
					   
		
		System.out.printf("필요한 코인수는 500원 - %d개, 100원 - %d개, 50원 - %d개, 10원 - %d개 입니다.", count[0], count[1], count[2],count[3]);
		System.out.println("----------------");
		
		//동전 갯수가 0일때는 출력X
		for (int i = 0; i < count.length; i++) {
			if(count[i] != 0) {
				System.out.printf("필요한 코인수는 \n%d 코인은 %d개 입니다.\n", coin[i], count[i]);
			}
		}
		
	}// main
}

 

예제) 동전 갯수 구하기 t_code

package ex2_array_work;

import java.util.Random;

public class Ex8_work {
	public static void main(String[] args) {
		
		//변수 money를 만들고 10~5000사이의 난수를 넣는다
		//단, 발생된 난수는 3450, 2100과 같이 1의 자리가 반드시 0이되어야한다.
		//500, 100, 50, 10원짜리 동전이 각각 몇개씩 필요한지 출력
		//가능한 적은 수의 동전을 사용해야 함
			
		
		int[] coin = {500, 100, 50, 10};
		
		//난수 10~5000원 사이의 난수 발생
		
		int money1 = new Random().nextInt(500) + 1;
		money1 *= 10;

		System.out.println("금액 : " + money1);
		
		for (int i = 0; i < coin.length; i++) {
			
			int res = money1 /coin[i];
			
			if (res > 0) {
				System.out.println(coin[i] + "원 : " + res);
				money1 %= coin[i];
			}
		}
		
	}// main
}

'develop > JAVA' 카테고리의 다른 글

JAVA study 08  (0) 2024.03.07
JAVA study 07  (0) 2024.03.06
JAVA study 05  (0) 2024.03.05
JAVA study 04  (0) 2024.03.05
JAVA study 03  (1) 2024.03.05