이전 내용
[java] java 예제 및 풀이(scanner, 조건문, do-while)
이전 내용 [java] parse+자료형: 문자열 변환이전 내용 [java] 이클립스 한글 깨짐이전 내용 [java] 이클립스 다크모드, 글꼴 설정이전 내용 [Java] Java 개념, Java를 위한 프로그램 설치Java 란?출처: 위
puppy-foot-it.tistory.com
예제1
Q. Switch 문을 사용하여 과일 가격을 알려주는 프로그램 만들기
System.out.println("어떤 과일을 원하세요?");
String fruit = "Banana";
switch (fruit) {
case "Apple":
System.out.println("5000원 입니다.");
break;
case "Grape":
System.out.println("8000원 입니다.");
break;
case "Banana":
System.out.println("3000원 입니다.");
break;
case "Peach":
System.out.println("6000원 입니다.");
break;
default:
System.out.println("0원 입니다.");
}
System.out.println("감사합니다.");

[Java] 25년 1월 7일 - 자바 기초(조건문, scanner)
이전 내용 [JAVA] 25년 1월 3일 - 자바 기초이전 내용 [JAVA] 25년 1월 2일 - 자바 기초◆ 새 프로젝트 만들기 New - java project - 프로젝트명: java_ex02 ◆ 클래스 만들기 java_ex02 - src - New - Class - Ex01 * 이클
puppy-foot-it.tistory.com
예제2
Q. Switch 문을 사용하여 대소문자 관계 없이 회원 등급을 출력하는 프로그램 만들기
// 대소문자 구분 없는 등급 프로그램
char grade = 'B';
switch (grade) {
case 'a':
case 'A':
System.out.println("최우수회원 입니다.");
break;
case 'b':
case 'B':
System.out.println("우수 회원 입니다.");
break;
case 'c':
case 'C':
System.out.println("일반 회원 입니다");
break;
default:
System.out.println("회원이 아닙니다.");

▶ case 문마다 break라는 문장이 있는데, 만약 break 문이 빠져 있다면 그 다음의 case 문에 속한 문장들이 실행된다.
예제3-1
Q. 학생 점수 관리 프로그램 5명의 학생의 시험 점수를 입력받아 배열에 저장 저장된 점수를 이용
1) 모든 학생의 점수 출력
2) 평균 점수
3) 최고 점수와 그 학생의 번호 (1번부터 시작)
※ 조건: 배열과 for문 사용, 입력은 scanner 사용
public static void main(String[] args) {
/*
* 퀴즈. 학생 점수 관리 프로그램 5명의 학생의 시험 점수를 입력받아 배열에 저장 저장된 점수를 이용해 1) 모든 학생의 점수 출력 2)
* 평균 점수 3) 최고 점수와 그 학생의 번호 (1번부터 시작) 조건: 배열과 for문 사용, 입력은 scanner 사용
*/
Scanner scanner = new Scanner(System.in);
// 변수 선언 및 초기화
int[] scoresArr = new int[6]; // 점수를 저장할 배열. 1번부터 시작해야 하므로, 1~5까지 받음
int totalScore = 0; // 총점 변수 선언 및 초기화
int maxScore = 0; // 최고점 변수 선언 및 초기화
String[] students = new String[6]; // 학생 배열 선언
String bestStudent = null; // 가장 잘한 학생 변수 선언 및 초기화
System.out.println("5명의 점수를 입력해 주세요:");
for (int i = 1; i < scoresArr.length; i++) { // i 시작은 1부터, i가 점수 배열보다 작은 동안, 1씩 증가
students[i] = "학생" + i; // 학생 1~5까지 저장
System.out.print("학생" + i + "의 점수:");
scoresArr[i] = scanner.nextInt(); // 점수 입력 받음
totalScore += scoresArr[i]; // 총점은 점수 반복 시마다 더함
if (scoresArr[i] > maxScore) { // 만약 입력받은 점수가 최고점보다 큰 경우
maxScore = scoresArr[i]; // 최고점에 큰 점수 입력됨
bestStudent = students[i]; // 해당 학생도 저장
}
}
System.out.println("### 모든 학생의 점수 ###");
for (int i = 1; i < scoresArr.length; i++) { // i가 점수 배열보다 작은 동안, 각 학생과 해당 학생의 점수 출력
System.out.println(students[i] + ": " + scoresArr[i] + "점");
}
int avgScore = (totalScore / (scoresArr.length - 1)); // 평균은 총점 / 개수-1 (6개 이므로 하나 뺌)
System.out.println("총점: " + totalScore + "점");
System.out.println("평균 점수: " + avgScore + "점");
System.out.println("최고 점수: " + maxScore + "점 / " + "가장 잘한 학생: " + bestStudent);
}

예제3-2
Q. 예제3-1에서 아래 세 가지 추가
추가1. 최저점수와 그 학생 번호 출력
추가2. 80점 이상인 학생 수를 계산하여 출력
추가3. 점수를 내림차순으로 정렬하여 출력 (버블 정렬 사용)
public static void main(String[] args) {
/*
* 퀴즈. 학생 점수 관리 프로그램 5명의 학생의 시험 점수를 입력받아 배열에 저장 저장된 점수를 이용해 1) 모든 학생의 점수 출력 2)
* 평균 점수 3) 최고 점수와 그 학생의 번호 (1번부터 시작) 조건: 배열과 for문 사용, 입력은 scanner 사용 추가1. 최저
* 점수와 그 학생 번호 출력 추가2. 80점 이상인 학생 수를 계산하여 출력 추가3. 점수를 내림차순으로 정렬하여 출력 (버블 정렬 사용)
*/
Scanner scanner = new Scanner(System.in);
// 변수 선언 및 초기화
Integer[] scoresArr = new Integer[5]; // 점수를 저장할 배열.
int totalScore = 0; // 총점 변수 선언 및 초기화
int maxScore = 0; // 최고점 변수 선언 및 초기화
int minScore = 999; // 최저점 변수 선언 및 초기화
String[] students = new String[5]; // 학생 배열 선언
String highestStudent = null; // 가장 점수가 높은 학생 변수 선언 및 초기화
String lowestStudent = null; // 가장 점수가 낮은 학생 변수 선언 및 초기화
int overEighties = 0; // 80점 이상 학생수 저장할 변수 선언 및 초기화
// 프로그램 시작
System.out.println("5명의 점수를 입력해 주세요:");
for (int i = 0; i < scoresArr.length; i++) { // i가 점수 배열보다 작은 동안, 1씩 증가
students[i] = "학생" + (i + 1); // 학생 1~5까지 저장
System.out.print("학생" + (i + 1) + "의 점수:");
scoresArr[i] = scanner.nextInt(); // 점수 입력 받음
totalScore += scoresArr[i]; // 총점은 점수 반복 시마다 더함
if (scoresArr[i] > maxScore) { // 만약 입력받은 점수가 최고점보다 큰 경우
maxScore = scoresArr[i]; // 최고점에 큰 점수 입력됨
highestStudent = students[i]; // 해당 학생도 저장
}
if (scoresArr[i] < minScore) { // 입력받은 점수가 최저점보다 작은 경우
minScore = scoresArr[i]; // 최저점에 작은 점수 입력됨
lowestStudent = students[i]; // 해당 학생도 저장
}
if (scoresArr[i] >= 80) { // 80점 이상이면 overEighties 1씩 증가
overEighties++;
}
}
System.out.println("### 모든 학생의 점수 ###");
for (int i = 0; i < scoresArr.length; i++) { // i가 점수 배열보다 작은 동안, 각 학생과 해당 학생의 점수 출력
System.out.println(students[i] + ": " + scoresArr[i] + "점");
}
double avgScore = (totalScore / (scoresArr.length)); // 평균은 총점 / 개수
System.out.println("총점: " + totalScore + "점");
System.out.println("평균 점수: " + avgScore + "점");
System.out.println("최고 점수: " + maxScore + "점 / " + "점수가 가장 높은 학생: " + highestStudent);
System.out.println("최저 점수: " + minScore + "점 / " + "점수가 가장 낮은 학생: " + lowestStudent);
System.out.println("80점 이상 학생 수: " + overEighties + "명");
// 내림차순으로 정렬
System.out.println("### 내림차순으로 정렬된 점수 ###");
Arrays.sort(scoresArr, Collections.reverseOrder());
System.out.println(Arrays.toString(scoresArr));
for (int i = 0; i < scoresArr.length; i++) {
System.out.println(i + 1 + "등: " + scoresArr[i] + "점");
}
scanner.close();
}

[버블 정렬 구현]
// 버블 정렬
for (int i = 0; i < scoresArr.length - 1; i++) {
for (int j = 0; j < scoresArr.length - 1 - i; j++) {
if (scoresArr[j] < scoresArr[j + 1]) { // 내림차순: 두 요소를 비교하여 큰 값을 앞으로 이동시킴
// 스왑
int temp = scoresArr[j];
scoresArr[j] = scoresArr[j + 1];
scoresArr[j + 1] = temp;
}
}
}
System.out.println("### 내림차순으로 정렬된 점수 ###");
for (int score : scoresArr) {
System.out.println(score + " ");
}

예제4-1
Q. 한 반에 3명의 학생이 있고, 각 학생은 서로 다른 횟수의 시험을 봤다. 이 시험 점수를 2차원 배열에 저장하고, 다음을 계산하라.
1. 각 학생의 시험 점수 출력
2. 각 학생의 평균 점수
3. 전체 학생의 최고 점수와 그 학생 번호(1번부터 시작)
조건1. 2차원 배열을 사용하며, 각 행(학생)의 열 길이(시험 횟수)는 다르게 설정
조건2. 배열과 for 문 활용
조건3. 입력은 미리 정의된 값으로 사용
public static void main(String[] args) {
/*
* 학생별 시험 점수 관리 (열의 길이가 다른 2차원 배열) Q. 한 반에 3명의 학생이 있고, 각 학생은 서로 다른 횟수의 시험을 봤다. 이
* 시험 점수를 2차원 배열에 저장하고, 다음을 계산하라. 1. 각 학생의 시험 점수 출력 2. 각 학생의 평균 점수 3. 전체 학생의 최고
* 점수와 그 학생 번호(1번부터 시작) 조건1. 2차원 배열을 사용하며, 각 행(학생)의 열 길이(시험 횟수)는 다르게 설정 조건2. 배열과
* for 문 활용 조건3. 입력은 미리 정의된 값으로 사용
*/
int[][] scores = { { 85, 90, 78 }, { 92, 88 }, { 95, 87, 91, 89 } };
int eachScores = 0;
double avgScoreByStudent = 0.0;
System.out.println("### 각 학생의 시험 점수 ###");
for (int i = 0; i < scores.length; i++) {
int totalScoreByStudent = 0;
int examTimes = 0;
Integer[] scoresArr = new Integer[scores[i].length];
for (int j = 0; j < scores[i].length; j++) {
eachScores = scores[i][j];
scoresArr[j] = eachScores;
totalScoreByStudent += eachScores;
examTimes++;
}
avgScoreByStudent = totalScoreByStudent / examTimes;
System.out.println("학생" + (i + 1) + "의 점수: " + Arrays.toString(scoresArr));
System.out.println("학생" + (i + 1) + " - 총점: " + totalScoreByStudent + "점 / " + "시험 횟수: " + examTimes);
System.out.println("학생" + (i + 1) + " - 평균점수: " + avgScoreByStudent);
System.out.println();
}
}

예제4-2
Q. 예제 4-1에서
1. 각 학생의 최저 점수 출력하도록 코드 수정
2. 전체 학생 중 90점 이상인 시험의 개수 출력
3. 학생별로 점수를 오름차순으로 정렬하여 출력 (각 행별로 정렬)
public static void main(String[] args) {
/*
* 11번 학생 시험 확장 1. 각 학생의 최저 점수 출력하도록 코드 수정 2. 전체 학생 중 90점 이상인 시험의 개수 출력 3. 학생별로
* 점수를 오름차순으로 정렬하여 출력 (각 행별로 정렬)
*/
int[][] scores = { { 85, 90, 78 }, { 92, 88 }, { 95, 87, 91, 89 } };
int maxScore = 0;
int overNineties = 0;
int eachScores = 0;
double avgScoreByStudent = 0.0;
String[] students = new String[scores.length];
String bestStudent = null;
System.out.println("### 각 학생의 시험 점수###");
for (int i = 0; i < scores.length; i++) {
Integer[] scoresArr = new Integer[scores[i].length];
int scoreByStudent = 0;
int examTimes = 0;
int minScoreByStudent = 999;
int maxScoreByStudent = 0;
students[i] = "학생" + (i + 1);
for (int j = 0; j < scores[i].length; j++) {
eachScores = scores[i][j];
scoresArr[j] = eachScores;
scoreByStudent += eachScores;
examTimes++;
if (scoresArr[j] < minScoreByStudent) {
minScoreByStudent = scoresArr[j];
}
if (scoresArr[j] > maxScoreByStudent) {
maxScoreByStudent = scoresArr[j];
}
if (scoresArr[j] >= 90) {
overNineties++;
}
}
avgScoreByStudent = scoreByStudent / examTimes;
if (maxScoreByStudent > maxScore) {
maxScore = maxScoreByStudent;
bestStudent = students[i];
}
System.out.println("학생" + (i + 1) + ": " + Arrays.toString(scoresArr));
System.out.println("학생" + (i + 1) + "의 평균점수: " + avgScoreByStudent + "점");
System.out.println("학생" + (i + 1) + "의 최저점수: " + minScoreByStudent + "점");
System.out.println("학생" + (i + 1) + "의 90점 이상 개수: " + overNineties);
Arrays.sort(scoresArr);
System.out.println("학생" + (i + 1) + "의 오름차순 점수:" + Arrays.toString(scoresArr));
System.out.println();
}
System.out.println("### 전체 최고 점수###");
System.out.println(maxScore + "점 - " + bestStudent);
}

다음 내용
[java] java - 클래스, this() 코드
이전 내용 [java] 예제 및 풀이 (Switch, 배열 + 반복문)이전 내용 [java] java 예제 및 풀이(scanner, 조건문, do-while)이전 내용 [java] parse+자료형: 문자열 변환이전 내용 [java] 이클립스 한글 깨짐이전 내
puppy-foot-it.tistory.com
'프로그래밍 및 기타 > Java, JSP, HTML, CSS' 카테고리의 다른 글
[java] 메소드 선언 : 가변 인수 모를 때 (feat. enhanced for문) (0) | 2025.04.03 |
---|---|
[java] java - 클래스, this() 코드 (0) | 2025.04.03 |
[java] java 예제 및 풀이(scanner, 조건문, do-while) (0) | 2025.04.01 |
[java] parse+자료형: 문자열 변환 (0) | 2025.04.01 |
[java] 이클립스 한글 깨짐 (0) | 2025.03.31 |