배열
1. 자료구조:
- Tree: 가지구조
- Stack : last in first in (프링글스)
- Queue : first in first out (빨대와 같은)
- List
- Array : 같은 타입의 여러 변수를 하나의 묶음으로 다루는 자료구조
2. 배열 ( Array )
- int [ ] numbers = new int [3] ;
- 타입 / 선언 / 배열 이름 = 생성 키워드 / 타입 [배열의 크기] ;
배열선언 방법 1
int [] arr ; // 변수 선언, 주소가 담긴다.
arr = new int [3]; //배열을 선언
System.out.println(arr); // 주소값 출력
arr[1]=20;
System.out.println(arr[1]); // 20 출력
int[] temarr = arr;
temarr[1] = 15;
System.out.println(temarr[1]); // 15출력
System.out.println(arr[1]); // 15 출력>> temarr 주소와 같기 때문데
배열선언 방법 2
int[] array = {1,,46,3,7,8,2,3,7};
for( int i= 0; i<array. length; i++) {
System.out.println(array[i]);
}
for-each
배열의 크기
- 배열의 크기는 배열 레퍼런스 변수를 선언할 때 결정되지 않음
- 배열의 크기는 배열 생성 시에 결정되며, 나중에 바꿀 수 없음(고정적)
- 배열의 크기는 배열의 length라는 공간에 저장
배열속 최대, 최소값 구하기
점수 중에 최대, 최소 값 구하는 방법
Scanner sc = new Scanner(System.in);
// 1. 점수를 저장할 수 있는 배열 생성
int[] score = new int[5];
// 2. 성적 입력 받기
System.out.print("1번째 입력>>");
score [0] = sc. nextInt();
// 2-1 반복문으로 작성하기
for(int i =0; i<score.length; i++) {
System.out.print((i+1)+"번째 입력>>");
score[i] = sc.nextInt() ;
}
// 3.배열에 들어 있는 데이터 전부 출력하기
System.out.println("입력된 점수 : "+Arrays.toString(score)); // import Arrays 확인하기
// 4. 최고, 최저, 총합 점수를 저장할 수 있는 변수 선언하기
int max = 0;
int min = 0;
int sum = 0;
// 5. 배열 안에 모든 데이터와 max/min 비교하면서 최고 점수 정하기
if(max<score[0]) {
max=score[0];
}
if(max<score[1]) {
max=score[1];
}
if(max<score[2]) {
max=score[2];
}
//5-1 for문으로 정리하기
for(int i=0; i<score.length ; i++) {
max= score[i];
}
System.out.println("최고점수"+max);
// 6. 총합 구하기
sum += score[i];//= sum = sum+score[i]
연습
1) 홀수 찾기
- 정수형 데이터 5개를 저장할 수 있는 배열 array를 선언하세요.
- 배열 안의 모든 데이터를 임의의 값으로 초기화하세요.(1~100까지의 수)
- 배열 안의 데이터 중 홀수의 값만 출력하고 ,총 몇 개인지 출력하세요.
// 1. 배열 생성
Scanner sc = new Scanner(System.in);
int [] array = new int[5];
Random ran = new Random();
// 2. 램덤한 값으로 배열 초기화
for(int i=0; i<array.length; i++) {
array[i] = ran. nextInt(100) +1;
// 2-1. 홀수인 수만 값으로 넣기위해
if(array[i]%2==1) {
System.out.println(array[i]+" ");
}
}
// 3. 총 정리
int count = 0; // 홀수를 갯수를 확인하기 위해 변수 설정
System.out.println("array에 들어 있는 홀수는");
for(int i=0; i<array.length; i++) {
if(array[i]%2==1) {
System.out.println(array[i]+" ");
count++; // 홀수인 경우에만 1씩 증가
}
}
System.out.println("이며, ");
System.out.println("총"+count+"개 입니다.");
2) 로또 번호 추첨 (중복수 제거 for문 만들기)
- 정수형 데이터 5개를 저장할 수 있는 배열 array를 선언하세요.
- 배열 안의 데이터를 모두 임의의 값으로 초기화하세요.(1~10까지의 수)
- 단, 배열에 중복된 값을 제거해주세요.
- 배열 안의 데이터를 모두 출력해주세요.
//1. 램덤 생성
Random ran = new Random()
//2. 배열 만들기
int [] lotto = new int[5];
//3. lotto의 0번방 데이터를 랜덤수로 넣기
// ran. nextInt(10)+1; // 랜덤 도구를 이용해서 10개의 숫자를 뽑고 0부터 시작하니 1씩 더해준다.
lotto[0] = ran. nextInt(10)+1;
//4. lotto의 1번방 데이터를 랜덤수로 넣기
lotto[1] = ran. nextInt(10)+1;
//4-1 중복제거하기 (0번방과 1번방 동일한지 확인)
if(lotto[0]==lotto[1]) { // 0번 방과 1번 방이 같으면 1번에 다시 새로운 숫자 넣을거야)
lotto[1] = ran. nextInt(10)+1;
}
//5. lotto의 2번방 데이터를 랜덤수로 넣기
lotto[2] = ran. nextInt(10)+1;
//5-1 중복제거하기 (0번방과 2번방과 동일한지 확인)
if(lotto[0]==lotto[2]) { // 0번 방과 2번 방이 같으면 1번에 다시 새로운 숫자 넣을거야)
lotto[2] = ran. nextInt(10)+1;
}
//5-2 중복제거하기 (1번방과 2번방과 동일한지 확인)
if(lotto[1]==lotto[2]) { // 0번 방과 2번 방이 같으면 1번에 다시 새로운 숫자 넣을거야)
lotto[2] = ran. nextInt(10)+1;
}
//6. 규칙찾기
//6-1 if문(중복) 규칙 찾기
//4-1 중복제거하기 (0번방과 1번방 동일한지 확인)
if(lotto[0]==lotto[1]) { // 0번 방과 1번 방이 같으면 1번에 다시 새로운 숫자 넣을거야)
lotto[1] = ran. nextInt(10)+1;
}
// ★ for문으로 정리
for(int i=0; i<1 ; i++) {
if(lotto[i]==lotto[1]) {
lotto[1]=ran.nextInt(10)+1;
}
}
//5-1 중복제거하기 (0번방과 2번방과 동일한지 확인)
if(lotto[0]==lotto[2]) { // 0번 방과 2번 방이 같으면 1번에 다시 새로운 숫자 넣을거야)
lotto[2] = ran. nextInt(10)+1;
}
//5-2 중복제거하기 (1번방과 2번방과 동일한지 확인)
if(lotto[1]==lotto[2]) { // 0번 방과 2번 방이 같으면 1번에 다시 새로운 숫자 넣을거야)
lotto[2] = ran. nextInt(10)+1;
}
// ★for문으로 정리
for(int i=0; i<2; i++) {
if(lotto[i]==lotto[2]) {
lotto[2] = ran.nextInt(10)+1;
}
}
// 중복문 제거-for문 최종정리 과정
lotto[1] = ran. nextInt(10)+1;
for(int i=0; i<1 ; i++) {
if(lotto[i]==lotto[1]) {
lotto[1]=ran.nextInt(10)+1;
}
}
lotto[2] = ran. nextInt(10)+1;
for(int i=0; i<2; i++) {
if(lotto[i]==lotto[2]) {
lotto[2] = ran.nextInt(10)+1;
}
}
// ★★for문 최종정리 (랜덤수 넣기+중복제거 for문 통합)
for(int k=0; k<lotto.length; k++) {
lotto[k] = ran. nextInt(10)+1; // 랜덤 수 넣기
for(int i=0; i<k; i++) {
if(lotto[i]==lotto[k]) {
k--; // 중복된 숫자가 있을 경우 다시 인덱스 번호 앞으로 보내기
break; // 만약 중복수가 있을 경우 멈추고 for문으로 되돌아 갈거임
}
}
}
//7.랜덤수 나열하기
System.out.println(Arrays.toString(lotto));
이차배열
int [] ab = new int [5] ;
int [] cd = new int [5] ;
int [] ef = new int [5] ;
int [][] score = new int [3][5]; // 행, 열
/////////////////////////////////////////
int [] ab = new int [2] ;
ab[0] = 90;
ab[1] = 85;
int [] cd = new int [2] ;
cd[0] = 57;
cd[1] = 60;
int [] ef = new int [2] ;
ef[0] = 13;
ef[1] = 14;
int [][] score = new int [3][2]; // 행, 열
score [0][0]=90;
score [0][1]=85;
score [1][0]=57;
score [1][1]=60;
score [2][0]=13;
score [2][1]=14;
///////// for문 이용해서 score값 출력하기 /////////
/// 1단계 : 반복되는 규칙 찾기
System.out.println(score [0][0]);
System.out.println(score [0][1]);
System.out.println(score [1][0]);
System.out.println(score [1][1]);
System.out.println(score [2][0]);
System.out.println(score [2][1]);
/// 2단계 : for문 만들어 주기
System.out.println(score [0][0]);
System.out.println(score [0][1]);
for(int i =0, i<2; i++) {
System.out.println(score [0][i]); //규칙찾기 1
}
System.out.println(score [1][0]);
System.out.println(score [1][1]);
for(int i=0; i<2;i++) {
System.out.println(score [1][i]); //규칙찾기 1
}
System.out.println(score [2][0]);
System.out.println(score [2][1]);
for(int i =0; i<2 ;i++) {
System.out.println(score [2][i]) ; //규칙찾기 1
}
/// 최종 확인하기
for(int i =0; i<2; i++) {
System.out.println(score [0][i]); //규칙찾기 1
}
for(int i=0; i<2;i++) {
System.out.println(score [1][i]); //규칙찾기 1
}
for(int i =0; i<2 ;i++) {
System.out.println(score [2][i]) ; //규칙찾기 1
}
// 이중 for문 작성
for(int k=0; k<3; k++) {
for(int i=0; i<2; i++) {
System.out.println(score [k][i])
}
}
이차배열_예시
int[][] table = new int[5][5];
table[0][0] = 1;
table[0][1] = 2;
table[0][2] = 3;
table[0][3] = 4;
table[0][4] = 5;
table[1][0] = 6;
table[1][1] = 7;
table[1][2] = 8;
table[1][3] = 9;
table[1][4] = 10;
table[2][0] = 11;
table[2][1] = 12;
table[2][2] = 13;
table[2][3] = 14;
table[2][4] = 15;
// 규칙 찾기 1
table[0][0] = 1;
table[0][1] = 2;
table[0][2] = 3;
table[0][3] = 4;
table[0][4] = 5;
int ans = 1;
for(int i=0; i<table[0].length ; i++) { // 규칙확인
table[0][i] = ans++ ;
}
table[1][0] = 6;
table[1][1] = 7;
table[1][2] = 8;
table[1][3] = 9;
table[1][4] = 10;
for(int i = 0; i<table[1].length; i++) { //규칙확인
table[1][i] = ans++ ;
}
table[2][0] = 11;
table[2][1] = 12;
table[2][2] = 13;
table[2][3] = 14;
table[2][4] = 15;
for(int i =0; i<table[2].length; i++) {
table[2][i] = ans++ ;
}
// 규칙 찾기 2
for(int i=0; i<table[0].length ; i++) { // 규칙확인
table[0][i] = ans++ ;
}
for(int i = 0; i<table[1].length; i++) { //규칙확인
table[1][i] = ans++ ;
}
for(int i =0; i<table[2].length; i++) {
table[2][i] = ans++ ;
}
// 규칙 정리
int ans = 1;
for(int i =0; i<table.length ; i++) {
for(int i=0; i<table[0].length ; i++) {
table[k][i] = ans++ ; ;
}
}
// 출력하기
int ans = 1;
for(int i =0; i<table.length ; i++) {
for(int i=0; i<table[0].length ; i++) { // 규칙확인
System.our.println((table[k][i]=ans)+"\t") ;
}
System.out.println();
}
////<최종정리>
Scanner sc = new Scanner(System.in);
int[][] num = new int[5][5]; //배열선언
int a =1; //초기화
for( int i =0 ;i<num.length; i++) {
for(int j=0; j<num[i].length; j++) {
System.out.print((num[i][j]= a++)+"\t");
}
System.out.println();
}
Scanner sc = new Scanner(System.in);
int[][] num = new int[5][5]; //배열선언
//초기화 , 입력시킴
int a =1;
for(int i=0; i<num.length;i++) {
for(int j=0; j<num[i].length;j++) {
num[i][j]=a++;
}
System.out.println();
}
// 배열 수식 걸어주기
for(int i=0; i<num.length;i++) {
for(int j=0; j<num[i].length;j++) {
System.out.print (num[j][i]+"\t");
}
System.out.println();
}
Scanner sc = new Scanner(System.in);
int[][] num = new int[5][5]; //배열선언
int a =1; //초기화 , 입력시킴
for(int i=0; i<num.length;i++) {
for(int j=0; j<num[i].length;j++) {
num[i][j]=a++;
}
System.out.println();
}
/// 배열 수식 걸어주기
for(int k =0; k<5; k++) {
if(k%2==0) {
for( int i =0 ;i<5; i++) {
System.out.print(num[k][i]+"\t");
}
System.out.println();
} else {
for( int i =4 ;i>=0; i--) {
System.out.print(num[k][i]+"\t");
}
System.out.println();
}
}
출처:스마트인재개발원
'DATA 분석 교육 과정 (2024.02~08) > JAVA' 카테고리의 다른 글
JAVA_Collection, ArrayList (0) | 2024.03.17 |
---|---|
JAVA_정렬(Bubble-Sort, Selection-Sort / Sequential search, Binary search) (0) | 2024.03.17 |
JAVA_조건문(단순, if-else, 다중, switch) (0) | 2024.03.06 |
JAVA_연산자(산술, 대입, 비교, 논리, 증감, 삼항) (0) | 2024.03.05 |
JAVA_변수, 상수, 변수명 규칙, 자료형 (0) | 2024.03.04 |