점수도 문자로 입력 받았고
점수 범위를 설정 할 때 charAt 을 사용해 숫자로 변경 후 지정함.
for문에서 이름,점수들을 입력받아 배열에
student[i][0] = name;
student[i][1] = kor; ~
이렇게 대입.
새로운 2차원 배열을 생성하여
기존 배열의 값을 for문을 이용하여 입력
int studentCount[][] = new int[student.length][3];
for (int j = 0; j < studentCount.length; j++) {
studentCount[j][0] = Integer.parseInt(student[j][1]);//kor
studentCount[j][0] = Integer.parseInt(student[j][2]);//eng
studentCount[j][0] = Integer.parseInt(student[j][3]);//math
}
최저점수
최고점수
int max = studentCount[0][0]; //=0;으로 초기화 해도됨
for (int j = 0; j < student.length; j++) {
if(max < studentCount[j][1]) { //1은kor, 2는eng~
max = studentCount[j][1];
}
}
//5. 국어, 수학, 영어 최고점수와 최저점수 min
int min = studentCount[0][1]; //0;으로 설정할경우 0보다 낮은수가 없을경우 문제
for (int j = 0; j < student.length; j++) {
if (min > studentCount[j][1]) {
min = studentCount[j][1];
}
}
전체;
Scanner sc = new Scanner(System.in);
//선언
//학생 성적 관리용 2차원 배열
//String -> 이름, 숫자 ->parseInt로 변환
String student[][] = null;
// 학생수
int count; //학생수
//1. 학생수 입력받기
System.out.println("학생수를 입력 = ");
count = sc.nextInt();
//2.동적할당
student = new String[count][4]; //4는 입력 안해도 됨
//3. 입력: 이름, 국어, 영어, 수학
for (int i = 0; i < student.length; i++) {
System.out.print((i+1)+"번째 학생 ");
System.out.println("이름 : ");
String name = sc.next();
String kor = "";
while(true) {
System.out.println("국어 :");
kor = sc.next(); // 98 100 10a
//숫자로 입력 확인 -> 아스키코드값으로 비교
//>>다시입력해주세요
boolean check = false;//문제가 발생하면 true -> 다시 입력
for (int j = 0; j < kor.length(); j++) {
char c = kor.charAt(j);
if((int)c < 48 || (int)c > 57) {
check = true;
break;
}
}
if (check == true) {
System.out.println("잘못 입력하셨습니다. 다시 입력해 주십시오");
continue; //밑에있는것들 스킵
}
//1~100까지
//>>범위를 초과했습니다
int numKor = Integer.parseInt(kor);
if (numKor <0 || numKor> 100) {
System.out.println("범위를 초과한 점수입니다 다시입력해 주십시오");
continue;
}
break;
}
///////////////////////////////////////영어
String eng = "";
while(true) {
System.out.println("영어 :");
eng = sc.next(); // 98 100 10a
//숫자로 입력 확인 -> 아스키코드값으로 비교
//>>다시입력해주세요
boolean check = false;//문제가 발생하면 true -> 다시 입력
for (int j = 0; j < eng.length(); j++) {
char c = eng.charAt(j);
if((int)c < 48 || (int)c > 57) {
check = true;
break;
}
}
if (check == true) {
System.out.println("잘못 입력하셨습니다. 다시 입력해 주십시오");
continue; //밑에있는것들 스킵
}
//1~100까지
//>>범위를 초과했습니다
int numEng = Integer.parseInt(eng);
if (numEng <0 || numEng> 100) {
System.out.println("범위를 초과한 점수입니다 다시입력해 주십시오");
continue;
}
break;
}
////////////////////////////////////수학
String math = "";
while(true) {
System.out.println("수학 :");
math = sc.next(); // 98 100 10a
//숫자로 입력 확인 -> 아스키코드값으로 비교
//>>다시입력해주세요
boolean check = false;//문제가 발생하면 true -> 다시 입력
for (int j = 0; j < math.length(); j++) {
char c = math.charAt(j);
if((int)c < 48 || (int)c > 57) {
check = true;
break;
}
}
if (check == true) {
System.out.println("잘못 입력하셨습니다. 다시 입력해 주십시오");
continue; //밑에있는것들 스킵
}
//1~100까지
//>>범위를 초과했습니다
int numMath = Integer.parseInt(math);
if (numMath <0 || numMath> 100) {
System.out.println("범위를 초과한 점수입니다 다시입력해 주십시오");
continue;
}
break;
}
//데이터를 배열에 대입
student[i][0] = name;
student[i][1] = kor;
student[i][2] = eng;
student[i][3] = math;
}
for (int j = 0; j < student.length; j++) {
System.out.println((j+1)+"번째 학생 :");
for (int j2 = 0; j2 < student[0].length; j2++) {
System.out.print(student[j][j2]+"\t");
}
System.out.println();
}
//4. 국어, 수학, 영어 최고점수와 최고점수 max
int studentCount[][] = new int[student.length][3];
for (int j = 0; j < studentCount.length; j++) {
studentCount[j][0] = Integer.parseInt(student[j][1]);//kor
studentCount[j][0] = Integer.parseInt(student[j][2]);//eng
studentCount[j][0] = Integer.parseInt(student[j][3]);//math
}
int max = studentCount[0][0]; //=0;으로 초기화 해도됨
for (int j = 0; j < student.length; j++) {
if(max < studentCount[j][1]) { //1은kor, 2는eng~
max = studentCount[j][1];
}
}
//5. 국어, 수학, 영어 최고점수와 최저점수 min
int min = studentCount[0][1]; //0;으로 설정할경우 0보다 낮은수가 없을경우 문제
for (int j = 0; j < student.length; j++) {
if (min > studentCount[j][1]) {
min = studentCount[j][1];
}
}
//6. 모든 점수의 총 합
int sum = 0;
for (int j = 0; j < studentCount.length; j++) {
for (int j2 = 0; j2 < studentCount[0].length; j2++) {
sum = sum + studentCount[j][j2];
}
}
//7. 학생수에 따른 반 평균
double avg = (double)sum/student.length;
//8. 출력
System.out.println("최고점수 :" +max);
System.out.println("최저점수 :" +min);
System.out.println("점수의 총 합 :" +sum);
System.out.println("점수의 평균 :" +avg);
'JAVA > 기초 프로그래밍' 카테고리의 다른 글
함수 // 두 수를 나눈 몫, 나머지 구하기 (0) | 2020.05.27 |
---|---|
함수// 계산기 만들기 (0) | 2020.05.27 |
오름/내림차순 정렬 원리 sorting (0) | 2020.05.26 |
fibonnaci 피보나치 수열 (0) | 2020.05.26 |
2차원 배열을 - 1차원 배열에 대입하기 (0) | 2020.05.26 |