코딩/Java
kh6일차(배열)
danmuji
2022. 6. 27. 18:14
배열 = 참조형
int [] arr; =>참조형
int arr []; =>참조형
int[] arr = new int [5]; // 정수 5개를 저장할 수 있는 배열 선언
선언을 하면 그 선언된 자리에 기본값 0으로 세팅이됨
int[]arr = {1,2,3,4,5}; 라고 하면 각 인덱스에 1,2,3,4,5가 저장
String[] arr = {"hi","hello","bye"}
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
arr[4] = 5;
배열의 경우 반복문으로 출력가능
System.out.println("반복문을 이용한 배열 출력");
for(int i=0;i<5;i++) {
System.out.println(arr[i]);
package kh.java.func;
import java.util.Scanner;
import java.util.Random;
public class ArrayTest {
// 6.27
public void test1() {
// 정수형 변수 5개를 선언한 후 1/2/3/4/5 를 저장
int num0 = 1;
int num1 = 2;
int num2 = 3;
int num3 = 4;
int num4 = 5;
System.out.println("변수를 이용한 값 출력 ");
System.out.println(num0);
System.out.println(num1);
System.out.println(num2);
System.out.println(num3);
System.out.println(num4);
// 정수형 배열 이용해서 5개 값 저장후 출력
// 정수 5개를 저장할 수 있는 배열 선언
int[] arr = new int[5];
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
arr[4] = 5;
System.out.println("배열을 이용한 값 출력");
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr[3]);
System.out.println(arr[4]);
// 배열의 경우 반복문으로 출력가능
System.out.println("반복문을 이용한 배열 출력");
for (int i = 0; i < 5; i++) {
System.out.println(arr[i]);
}
}
public void test2() {
// 배열에 데이터 1,2,3,4,5 넣기
// 1) 길이가 5인 배열 선어 후 인덱스 번호로 데이터 넣기
int[] arr1 = new int[5];
// 선언 후 기본값으로 배열 초기화
for (int i = 0; i < 5; i++) {
System.out.println(arr1[i]);
}
arr1[0] = 1;
arr1[1] = 2;
arr1[2] = 3;
arr1[3] = 4;
arr1[4] = 5;
for (int i = 0; i < 5; i++) {
System.out.println(arr1[i]);
}
// 2) 배열 선언 시 동시에 값 대입
int[] arr2 = { 1, 2, 3, 4, 5 };
for (int i = 0; i < 5; i++) {
System.out.println(arr2[i]);
}
}
public void test3() {
// 배열에 hi,Hello,bye 를 대입
// 1) 길이가 3인 배열을 선언하여 인덱스이용해서 대입
// 2) 배열 선언하면서 동시에 값 대입{}이용
String[] arr3 = { "hi", "Hello", "bye" };
for (int i = 0; i < 3; i++) {
System.out.println(arr3[i]);
}
}
public void test4() {
// 길이가 4인 정수형 배열 선언
// 스캐너를 이용해서 국어점수,수학점수,영어점수를 입력받아 저장
// 입력받아서 배열에 저장
// 배열 마지막공간에는 합계를 저장
// 출력 국어점수/수학점수/영어점수/합계/평균
// 출력 예
// 국어 : 80 / 수학 : 50 / 영어 : 30 / 합계 : 160/ 평균 53.33
Scanner sc = new Scanner(System.in);
int arr1[] = new int[4];
int total = 0;
double avr = 0;
for (int i = 0; i < 3; i++) {
arr1[i] = sc.nextInt();
total += arr1[i];
avr = (double) total / 3;
}
System.out.print("국어 : " + arr1[0]);
System.out.print(" 수학 : " + arr1[1]);
System.out.print(" 영어 : " + arr1[2]);
System.out.print(" 합계 :" + total);
System.out.printf(" 평균: %.2f", avr);
}
public void test4_1() {
Scanner sc = new Scanner(System.in);
int[] arr = new int[4];
System.out.print("국어 점수 입력 : ");
arr[0] = sc.nextInt();
System.out.print("수학 점수 입력 : ");
arr[1] = sc.nextInt();
System.out.print("영어 점수 입력 : ");
arr[2] = sc.nextInt();
arr[3] = arr[0] + arr[1] + arr[2];
double avg = (double) arr[3] / 3;
System.out.printf("국어 : %d / 수학 : %d / 영어 : %d / 합계 : %d / 평균 : %.2f ", arr[0], arr[1], arr[2], arr[3], avg);
}
public void test5() {
// 길이 100인 정수형 배열 선언
// 1~100까지 값 순서대로 대입 후 출력
int[] arr = new int[100];
for (int i = 0; i < 100; i++) {
arr[i] = i + 1;
System.out.println(arr[i]);
}
// arr[0] = 1;
// System.out.println(arr[1]);
// arr[2] = 3;
// System.out.println(arr[3]);
}
public void test6() {
Scanner sc = new Scanner(System.in);
// 길이가 5인 정수형 배열을 선언
// 스캐너 + for문을 이용하여 정수 5개 입력받은후
// 입력받은 정수 출력
int[] arr = new int[5];
for (int i = 0; i < arr.length; i++) {
System.out.print((i + 1) + "정수 를 입력하세요 :");
arr[i] = sc.nextInt();
}
// if (arr[0] > arr[1]) {
// int tmp = arr[0];
// arr[0] = arr[1];
// arr[1] = tmp;
// }
// if (arr[1] > arr[2]) {
// int tmp = arr[1];
// arr[1] = arr[2];
// arr[2] = tmp;
// }
// if (arr[2] > arr[3]) {
// int tmp = arr[2];
// arr[2] = arr[3];
// arr[3] = tmp;
// }
// if (arr[3] > arr[4]) {
// int tmp = arr[3];
// arr[3] = arr[4];
// arr[4] = tmp;
// }
for (int j = 0; j < arr.length - 1; j++) {
for (int i = 0; i < arr.length - 1 - j; i++) {
if (arr[i] > arr[i + 1]) {
int tmp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = tmp;
}
}
}
// for (int i = 0; i < 3; i++) {
// if (arr[i] > arr[i + 1]) {
// int tmp = arr[i];
// arr[i] = arr[i + 1];
// arr[i + 1] = tmp;
// }
// }
// for (int i = 0; i < 2; i++) {
// if (arr[i] > arr[i + 1]) {
// int tmp = arr[i];
// arr[i] = arr[i + 1];
// arr[i + 1] = tmp;
// }
// }
// for (int i = 0; i < 1; i++) {
// if (arr[i] > arr[i + 1]) {
// int tmp = arr[i];
// arr[i] = arr[i + 1];
// arr[i + 1] = tmp;
// }
// }
// 배열 0번째 값과 배열 1번째 값을 비교해서
// 0번째가 큰 경우 두 수의 자리를 변경
for (int i = 0; i < 5; i++) {
System.out.print(arr[i] + "\t");
}
}
public void lotto() {
Scanner sc = new Scanner(System.in);
Random r = new Random();
System.out.println("===== 로또 프로그램 =====");
int userNum[] = new int[6]; // 사용자 번호
int pcNum[] = new int[6]; // pc 번호
int dup = 0;
for (int i = 0; i < userNum.length; i++) {
System.out.print((i + 1) + "번째 번호 입력 : ");
userNum[i] = sc.nextInt();
// 사용자 입력 숫자는 1~45사이값인지
// 이전에 입력을 했던 번호인지
// 1)1~45인지
if (userNum[i] < 1 || userNum[i] > 45) {
System.out.println("잘못 입력하셨습니다. 1~45사이의 숫자를 입력해주세요");
i--;// 해당 index값을 다시 입력 받아야 하므로 continue전에 미리 -1을 해둔다
continue;// 증감문으로 올라감
}
// 2)중복체크
for (int j = 0; j < i; j++) {// 지금 입력받은 인덱스 번호 이전까지만 검사
if (userNum[i] == userNum[j]) {
System.out.println("이미 중복된 번호입니다.");
i--;// 중복인경우 해당값을 다시 입력받아야하니까 -1
break;
}
}
}
for (int i = 0; i < pcNum.length; i++) {
pcNum[i] = r.nextInt(45) + 1;
// 2)중복체크
for (int j = 0; j < i; j++) {// 지금 입력받은 인덱스 번호 이전까지만 검사
if (pcNum[i] == pcNum[j]) {
i--;// 중복인경우 해당값을 다시 입력받아야하니까 -1
break;
}
}
}
for (int i = 0; i < userNum.length - 1; i++) {
for (int j = 0; j < userNum.length - 1 - i; j++) {
if (userNum[j] > userNum[j + 1]) {
int tmp = userNum[j];
userNum[j] = userNum[j + 1];
userNum[j + 1] = tmp;
}
if (pcNum[j] > pcNum[j + 1]) {
int tmp = pcNum[j];
pcNum[j] = pcNum[j + 1];
pcNum[j + 1] = tmp;
}
}
}
System.out.println("사용자 번호");
for (int i = 0; i < userNum.length; i++) {
System.out.print(userNum[i] + "\t");
}
System.out.println();
System.out.println("컴퓨터 번호");
for (int i = 0; i < pcNum.length; i++) {
System.out.print(pcNum[i] + "\t");
}
for (int i = 0; i < userNum.length; i++) {
// 2)중복체크
for (int j = 0; j <= i; j++) {// 지금 입력받은 인덱스 번호 이전까지만 검사
if (userNum[i] == pcNum[j]) {
dup++;
break;
}
}
}
System.out.println();
System.out.println(dup + "개 맞았습니다.");
if (dup == 6) {
System.out.println("1등");
} else if (dup == 5) {
System.out.println("2등");
} else if (dup == 4) {
System.out.println("3등");
} else if (dup == 3) {
System.out.println("4등");
} else {
System.out.println("꽝");
}
}
public void lotto_1() {
Scanner sc = new Scanner(System.in);
Random r = new Random();
System.out.println("===== 로또 프로그램 =====");
int userNum[] = new int[6]; // 사용자 번호
int pcNum[] = new int[6]; // pc 번호
for (int i = 0; i < userNum.length; i++) {
System.out.println((i + 1) + "번째 번호 입력 : ");
userNum[i] = sc.nextInt();
// 사용자 입력 숫자는 1~45사이값인지
// 이전에 입력을 했던 번호인지
// 1)1~45인지
if (userNum[i] < 1 || userNum[i] > 45) {
System.out.println("잘못 입력하셨습니다. 1~45사이의 숫자를 입력해주세요");
i--;// 해당 index값을 다시 입력 받아야 하므로 continue전에 미리 -1을 해둔다
continue;// 증감문으로 올라감
}
// 2)중복체크
for (int j = 0; j < i; j++) {// 지금 입력받은 인덱스 번호 이전까지만 검사
if (userNum[i] == userNum[j]) {
System.out.println("이미 중복된 번호입니다.");
i--;// 중복인경우 해당값을 다시 입력받아야하니까 -1
break;
}
}
}
int[] comNum = new int[6];
for (int i = 0; i < comNum.length; i++) {
comNum[i] = r.nextInt(45) + 1;
// 컴퓨터 번호 중복체크
for (int j = 0; j < i; j++) {
if (comNum[i] == comNum[j]) {
i--;
break;
}
}
}
// 사용자 번호 정렬
for (int i = 0; i < userNum.length; i++) {
for (int j = 0; j < userNum.length - 1 - i; j++) {
if (userNum[j] > userNum[j + 1]) {
int tmp = userNum[j];
userNum[j] = userNum[j + 1];
userNum[j + 1] = tmp;
}
}
}
// 컴퓨터 번호 정렬
for (int i = 0; i < comNum.length; i++) {
for (int j = 0; j < comNum.length - 1 - i; j++) {
if (comNum[j] > comNum[j + 1]) {
int tmp = comNum[j];
comNum[j] = comNum[j + 1];
comNum[j + 1] = tmp;
}
}
}
int cnt = 0;// 일치하는 번호 카운팅용 변수
// 유저번호,컴퓨터번호 일치하는 갯수 카운팅
for (int i = 0; i < userNum.length; i++) {
for (int j = 0; j < comNum.length; j++) {
if (userNum[i] == comNum[j]) {
cnt++;
break;
}
}
}
System.out.println("최종 결과");
System.out.println("사용자 번호 : ");
for (int i = 0; i < userNum.length; i++) {
System.out.println(userNum[i] + " ");
}
System.out.println();
System.out.println("당첨번호 : ");
for (int i = 0; i < comNum.length; i++) {
System.out.println(comNum[i] + " ");
}
System.out.println();
System.out.println("맞은 갯수 : "+cnt);
switch(cnt) {
case 6:
System.out.println("1등!");
break;
case 5:
System.out.println("2등!");
break;
case 4:
System.out.println("3등!");
break;
case 3:
System.out.println("4등!");
break;
default :
System.out.println("꽝!!!");
break;
}
}
}