반응형
package javaExample1;
import java.util.Scanner;
public class newlec {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int kors[][] = new int[3][3];
int total = 0;
float avg;
for (int j = 0; j < 3; j++) {
for (int i = 0; i < 3; i++)
kors[j][i] = 0;
}
EXIT: while (true) {
System.out.println("┌───────────────┐");
System.out.println("│ 성적 출력 프로그램 │ ");
System.out.println("└───────────────┘");
System.out.println("1. 국어 성적 입력"); // 1학년 국어3 2학년 국어3
System.out.println("2. 국어 성적 출력");
System.out.println("3. 종료");
System.out.print("입력 > ");
String menu_ = scan.next();
int menu = Integer.parseInt(menu_);
switch (menu) {
case 1:
System.out.println("┌───────────────┐");
System.out.println("│ 성적 입력 │ ");
System.out.println("└───────────────┘");
for (int j = 0; j < 3; j++) {
for (int i = 0; i < 3; i++) { // 각입력에대한 오류값을 찾기위해
do{
System.out.printf("%d학년의 국어%d : ", j + 1, i + 1);
kors[j][i] = scan.nextInt();
if (kors[j][i] < 0 || kors[j][i] > 100)
System.out.println("성적범위(0~100) 입니다.");
}while (kors[j][i] < 0 || kors[j][i] > 100);
}
}
break;
case 2:
System.out.println("┌───────────────┐");
System.out.println("│ 성적 출력 │ ");
System.out.println("└───────────────┘");
for (int j = 0; j < 3; j++) {
System.out.printf("----- %d학년 국어 성적--------\n", j + 1);
total = kors[j][0] + kors[j][1] + kors[j][2];
avg = total / 3.0f;
for (int i = 0; i < 3; i++) {
System.out.printf("%d국어 성적 : %3d\n", i + 1, total);
System.out.printf("총점 :%3d\n", total);
System.out.printf("평균 : %6.2f\n", avg);
}
}
break;
case 3:
break EXIT;
default:
System.out.println("1~3까지의 숫자만 입력할 수 있습니다.");
}
}
System.out.println("bye~~");
}
}
28. String menu_ = scan.next();
29. int menu = Integer.parseInt(menu_);
라인에서 nextLine으로 했을 때 스위치 문을 빠져나가고 다시 while문이 안 돌고 꺼져버리는 오류가 있었는데.
이유는 성적 입력 부분의 scan.nextInt()에서 마지막으로 3학년의 국어 3을 입력받고 엔터를 누르면
scan.nextInt()는 버퍼에서 숫자만 가져오고 엔터를 남겨두게 된다.
그다음 와일문으로 초기 부분으로 올라가서 입력을 받을 때 버퍼에 있던 엔터가 입력되면서 종료되는 상황이었다.
1. scannextLine()을 next로 바꿔주는 방법이 있고.
2. System.out.printf("% d학년의 국어% d : ", j + 1, i + 1);
kors [j][i] = scan.nextInt();에서
* scan.nextLine();으로 버퍼를 비워주는 방법이 있다.
반응형
'JAVA > [JAVA] 바구니' 카테고리의 다른 글
JAVA 구조적인 프로그래밍 Top Down (0) | 2020.02.28 |
---|---|
JAVA 구조적인 프로그래밍 Bottom Up (0) | 2020.02.28 |
JAVA 연산자 -1 (0) | 2020.02.20 |
JAVA 값과 형식 (0) | 2020.02.20 |
통합 개발환경 Eclipse 단축기 정리 (0) | 2020.02.20 |
댓글