[혼공자바] 2주차 미션
1. p.142 switch문실행 후 결과 화면 캡쳐(기본미션)
**<코드>**코드>
public class Main {
public static void main(String[] args) {
int num = (int) (Math.random() * 6) + 1;
switch (num) {
case 1:
System.out.println("1번이 나왔습니다.");
break;
case 2:
System.out.println("2번이 나왔습니다.");
break;
case 3:
System.out.println("3번이 나왔습니다.");
break;
case 4:
System.out.println("4번이 나왔습니다.");
break;
case 5:
System.out.println("5번이 나왔습니다.");
break;
default:
System.out.println("6번이 나왔습니다.");
break;
}
}
}
**<결과>**결과>
2. p.202 05-2 확인 문제 6번 풀고 정리(선택미션)
**<코드>**코드>
-
scanner.nextInt()을 쓰지 않는 이유
-
nextInt() 메서드는 개행문자(Enter)를 읽지 않기 때문에, 학생수를 입력받은 후 Enter가 버퍼에 남아있게 된다.
이로 인해 다음 ‘scanner.nextLine()’을 호출할 때, 버퍼에 남아있는 Enter가 그대로 입력으로 들어가 이로 인해 빈 문자열(““)이 되어 Integer.parseInt()에서 NumberFormatException 발생한다.
➡ 학생 수 입력 받은 후 ‘scanner.nextLine()’을 호출해 Enter를 소비해주어야 한다.
-
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
boolean run = true;
int studentNum = 0;
int[] scores = null;
Scanner scanner = new Scanner(System.in);
while(run){
System.out.println("----------------------------------------------");
System.out.println("1.학생수 | 2.점수입력 | 3.점수리스트 | 4.분석 | 5.종료");
System.out.println("----------------------------------------------");
System.out.print("선택> ");
int selecNo = Integer.parseInt(scanner.nextLine());
if (selecNo == 1){ // 학생수 입력
// 코드 작성
System.out.print("학생수> " );
studentNum = Integer.parseInt(scanner.nextLine());//학생 수 입력 받기
}
else if(selecNo == 2){// 점수입력
// 코드 작성
scores = new int[studentNum];//score 배열에 학생 수 만큼 크기 지정
for(int i = 0; i < scores.length; i++){// 배열 길이만큼 for문 돌기
System.out.print("scores["+ i + "]> ");
scores[i] = Integer.parseInt(scanner.nextLine());// 점수 입력
}
}
else if(selecNo == 3) {// 점수리스트 출력
// 코드 작성
for (int i = 0; i < scores.length; i++) {// socre 배열 길이만큼 for문 돌기
System.out.println("scores[" + i + "]> " + scores[i]);// 점수 리스트 출력
}
}
else if(selecNo == 4){ // 최댓값, 평균값 출력
// 코드 작성
int max = -1000000;// 임시 최댓값 지정
int sum = 0;
double avg = 0.0;
for(int i =0; i < scores.length; i++){ // score 배열 길이만큼 for문 돌기
if (scores[i] > max){ // scores[i]가 max보다 크면
max = scores[i];// 최댓값 지정
}
sum += scores[i];// 점수 합
}
avg = (double)sum / (double)scores.length;// 점수 합에 배열 길이만큼 나누기
// 최댓값, 평균값 출력
System.out.println("최고 점수: " + max);
System.out.println("평균 점수: " + avg);
}
else if(selecNo == 5){
run = false;
}
}
System.out.print("프로그램 종료" );
}
}
**<결과> **결과>
댓글남기기