2021. 03. 26(금) TIL
Java
배열 복습
// 복습
// 학과명을 저장하는 배열을 생성하기
// 학과명은 "컴퓨터공학과", "통계학과", "수학과", "전자공학과", "정보통신공학과"다
// 학과명 배열은 문자열 5개 저장하는 배열을 new 연산자를 사용해서 생성하고,
// 0번부터 4번까지 순서대로 학과명을 배열에 저장하기
String deptName[] = new String[5];
deptName[0] = "컴퓨터공학과";
deptName[1] = "통계학과";
deptName[2] = "수학과";
deptName[3] = "전자공학과";
deptName[4] = "정보통신공학과";
// 학생들의 이름을 저장하는 배열을 생성하기
// 학생명은 "이순신", "김유신", "강감찬", "유관순"이다.
// 학생명 배열은 배열표현식을 {값, 값, 값}을 사용해서 배열을 생성하기
String[] studentName = {"이순신", "김유신", "강감찬", "유관순"};
// 학생들의 학점을 저장하는 배열을 생성하기
// 학생들의 성적은 3.1, 3.0, 4.0, 4.3이다
// 학생성적 배열은 배열표현식을 사용해서 배열을 생성하기\
double[] credit = {3.1, 3.0, 4.0, 4.3};
// ### 배열의 값 출력하기
// 학과명 배열의 모든 값을 for문을 사용해서 화면에 출력하기
// 학생이름 배열의 모든 값을 향상된 for문을 사용해서 화면에 출력하기
// 학생성적 배열의 모든 값을 향상된 for문을 사용해서 화면에 출력하기
// 학생명 배열에서 0번째에 저장된 학생의 이름과, 학생성적 배열에서 0번째에 저장된 학생의 성적 출력하기
System.out.println("### 학과명 출력하기 ###");
for(int i = 0; i < deptName.length; i++) {
System.out.println("학과명 : " + deptName[i]);
}
System.out.println("### 학생이름 출력하기 ###");
for(String x : studentName) {
System.out.println("학생이름 : " + x);
}
System.out.println("### 학생성적 출력하기 ###");
for(double y : credit) {
System.out.println("학생성적 : " + y);
}
System.out.println("### 지정된 위치의 값 출력하기");
System.out.println("0번째 학생이름 : " + studentName[0]);
System.out.println("0번째 학생성적 : " + credit[0]);
System.out.println("### 성적에 대한 총점과 평균 출력하기");
double totalScore = 0.0;
double avg = 0.0;
for(int i = 0; i < credit.length; i++) {
totalScore += credit[i]*10;
}
totalScore /= 10;
avg = totalScore / credit.length;
System.out.println("총점 : " + totalScore);
System.out.println("평균 : " + avg);
최대, 최소값 구하기
int[] scores = {79, 88, 91, 100, 55, 95};
// 배열에 저장된 값을 대상으로 최소값, 최대값 구하기
int min = 100; // 최소값을 구할 때는 해당값이 가질 수 있는 가장 큰 값을 초기값으로 지정한다.
int max = 0; // 최대값을 구할 떄는 해당값이 가질 수 있는 가장 작은 값을 초기값으로 지정한다
// 최소값을 min에 저장된 값보다 배열에서 조회한 값이 더 작을 때만 min의 값을 배열값으로 바꾼다.
for (int score : scores) {
if (score < min) { // 최소값 구하기
min = score;
}
}
// 최대값은 min에 저장된 값보다 배열에서 조회한 값이 더 클때만 max의 값을 배열의 값으로 바꾼다.
for (int score : scores) {
if (score > max) { // 최대값 구하기
max = score;
}
}
System.out.println("최소값 : " + min);
System.out.println("최대값 : " + max);
로또 번호 만들기
// 난수를 활용해서 로또 번호 만들기
// 난수는 수행문이 실행될 때마다 생성되는 임의의 숫자다.
// 자바는 Math 클래스에 여러 가지 수학연산과 관련된 기능을 가지고 있고,
// 난수를 생성하는 기능도 가지고 있다.
// 난수 만들기 Math.random() 메소드를 사용해서 난수를 생성한다.
// 0 <= Math.random() < 1 난수의 범위다.
/*
* 로또번호 생성하기
* 1. 번호를 저장할 배열을 생성한다.
* 2. 중복체크가 끝난 숫자를 배열의 몇번째 칸에 저장해야 하는지 그 위치를 기억하는 변수를 만든다
*
* 3. while문을 사용해서 중복이 없는 로또번호가 만들어질 떄까지 무한반복한다.
* 1) position값이 6이면 탈출한다.
* 2) Math.random()을 이용해서 임의의 숫자(1 ~ 45)를 획득한다.
* 3) lotto 배열에 2번에서 획득한 숫자가 저장되어 있는지 여부를 조사한다.
* a. lotto배열에 숫자가 존재하는지 여부를 담는 변수를 선언한다.(boolean 타입의 변수)
* b. for문을 사용해서 lotto배열에 저장된 값을 순서대로 조회해서
* c. 2)번에서 획득한 번호와 일치하는지 조사해 일치하면 숫자존재여부를 true로 설정한다.
*
* 4) 저장여부를 조사했을 때 false로 판정되면,
* a. 2)번에서 획득한 숫자를 lotto배열에 position이 가르치는 위치에 저장한다.
* b. position의 값을 1증가시킨다. (숫자가 배열에 저장될 떄만 position값이 증가됨)
*
* 4. 로또 배열의 값을 오름차순으로 정렬한다
* 5. 완성된 로또번호를 출력한다.
*/
int[] lotto = new int[6]; // 1. 로또용 배열 생성
int position = 0; // 2. 중복여부 체크가 완료된 숫자가 저장될 위치를 기억하는 변수
while (true) { // 3. 숫자 뽑기 무한 반복
if (position == 6) { // 1) 반복문 중지여부 결정
break;
}
int number = (int) (Math.random()*45) + 1; // 2) 난수 획득
// 3) 중복(존재)여부 조사
boolean isExist = false; // 3) - a
for (int no : lotto) { // 3) - b
if (no == number) { // 3) - c
isExist = true;
break;
}
}
if (!isExist) { // 4) 중복여부체크가 완료된 숫자를 로또 배열에 저장
lotto[position] = number; // 4) - a
position++; // 4) - b
}
}
Arrays.sort(lotto); // 4
for (int x : lotto) { // 5
System.out.print(x + " ");
}
다차원 배열
/*
* 다차원 배열
* 1차원 배열
* int[] x = new int[3]
* int[] x = {1, 2, 3, 4, 5}
* 2차원 배열
* String[][] x = new String[2][3];
* String[][] x = {{"김유신","강감찬","이순신"}, {"홍길동","임꺽정","장길산"}};
*
* 0 1 2
* -------------------------------
* 0ㅣ"김유신"ㅣ"강감찬"ㅣ"이순신"ㅣ
* -------------------------------
* 1ㅣ"홍길동"ㅣ"임꺽정"ㅣ"장길산"ㅣ
* -------------------------------
*/
// 다차원배열(2행 3열 다차원 배열) 생성하기
int[][] scores = {{70, 50, 80}, {100, 80, 10}};
// 다차원 배열의 값 출력하기
System.out.println(scores[0][0]); // 70
System.out.println(scores[0][1]); // 50
System.out.println(scores[0][2]); // 80
System.out.println(scores[1][0]); // 100
System.out.println(scores[1][1]); // 80
System.out.println(scores[1][2]); // 10
// for문을 사용해서 다차원 배열의 모든 값을 출력하기
for (int i = 0; i < scores.length; i++) { // 행의 갯수
for (int j = 0; j < scores[i].length; j++) { // 열의 갯수
System.out.print(scores[i][j] + " ");
}
System.out.println();
}
배열 예시
// 학생 성적 관리하기
/*
* 학생들의 이름을 저장하는 1차원 배열이 있다.
* 학생들의 국어, 영어, 수학 점수를 저장하는 2차원 배열이 있다.
*
* ["김유신", "강감찬", "이순신", "홍길동"]
*
* 국어 영어 수학 <--- 실제 배열에 저장되는 값은 아님
* 100 100 100 <--- 김유신의 성적
* 90 70 80 <--- 강감찬의 성적
* 70 60 40 <--- 이순신의 성적
* 100 80 90 <--- 홍길동의 성적
*/
String[] names = {"김유신", "강감찬", "이순신", "홍길동"};
//
int[][] scores = { {100, 100, 100},
{90, 70, 80},
{70, 60, 40},
{100, 80, 90} };
System.out.println("### 김유신 학생의 성적정보 출력하기");
for (int score : scores[0]) {
System.out.printf("%5d", score);
}
System.out.println();
System.out.println("### 국어과목의 총점과 평균을 계산하고, 출력하기");
int korTotal = 0;
int korAverage = 0;
for (int[] row : scores) {
korTotal += row[0];
}
korAverage = korTotal / scores.length;
System.out.println("국어과목 총점 : " + korTotal + ", 평균 : " + korAverage);
/*
* ==== 학생 성적 정보 ==============================
* 이름 국어 영어 수학 총점 평균
* 김유신 100 100 100 300 100
* 강감찬 90 70 80 240 80
* 이순신 70 60 40 170 56
* 홍길동 100 80 90 270 90
* ---------------------------------------------------
* 360 310 310
* 90 78 78
*/
System.out.println("====== 학생 성적 정보 ===================================");
System.out.printf("%6s%6s%6s%6s%6s%6s\n", "이름", "국어", "영어", "수학", "총점", "평균");
for (int i = 0; i < names.length; i++) { // names 배열에 저장된 학생들의 수 만큼 반복작업
int total = 0; // 각 학생의 총점을 저장할 변수
int average = 0; // 각 학상의 평균을 저장할 변수
String name = names[i]; // names배열에서 i번째 이름을 조회한다.
System.out.printf("%6s", name); // 조회된 학생이름을 출력한다
int[] myScores = scores[i]; // 점수배열에서 i번째 행의 배열을 조회한다( 한 학생
for (int score : myScores) { // myScores배열에서 순서대로 국어, 영어, 수학점수
total += score; // total에 각 점수를 더한다
System.out.printf("%7d", score); // 각 점수를 화면에 출력한다
}
average = total / 3; // 평균을 계산한다
System.out.printf("%7d%7d", total, average); // 총점과 평균을 출력한다
System.out.println(); // 줄바꿈 문자를 출력한다.
}
System.out.println("=========================================================");
Author And Source
이 문제에 관하여(2021. 03. 26(금) TIL), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@eastgun_/2021.-03.-26금-TIL저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)