Notice
Recent Posts
Recent Comments
Link
drexqq
[Java, 자바] 성적 통계프로그램.ver2 본문
728x90
반응형
Java를 이용해 성적 통계프로그램을 만들어보았다.
학생 수 - 동적 할당
과목 수 - 3개
학생 이름과 과목을 동시에 입력받아 토큰을 이용하여 저장한다.
ex) 이름-과목 1 점수-과목 2 점수-과목 3 점수
결과
학생의 과목당 점수/합계/평균/모든 점수의 최댓값/모든 점수의 최솟값
모든 점수는 0 ~ 100 사이의 숫자로만 받을 수 있다.
코드
package work0525;
import java.util.Scanner;
public class Work03 {
public static void main(String[] args) {
/*
성적 통계 프로그램
통계를 산출할 학생의 수 - 입력 (o)
동적할당 -> student[][]
ex) 홍길동 90
100
85
일지매 85
90
100
....
이름, 과목점수 - 입력 (o)
과목점수 >> 숫자로 입력받도록 >> 숫자가 아닌경우 다시 입력 (o)
0 ~ 100 사이의 숫자 >> 초과한 경우 다시입력 (o)
국어, 수학, 영어 최고 점수
국어, 수학, 영어 최저 점수
점수의 총합 (o)
학생 수에 따른 평균 (o)
*/
Scanner sc = new Scanner(System.in);
System.out.println("학생 수를 입력해주세요.");
// 학생 수
int studentNum = sc.nextInt();
System.out.println("통계를 낼 학생은 "+studentNum+"명 입니다.");
// 학생 배열
String student[][] = new String[studentNum][4];
// 학생 정보
String info;
// 과목
String subject[] = {"국", "영", "수"};
// 최대, 최소, 총합, 평균 init
int max = 0, min = 0, sum = 0, avg = 0;
for (int i = 0; i < student.length; i++) {
System.out.println("이름, 국어, 영어, 수학점수를 입력해주세요(이름-국어-영어-수학)");
info = sc.next();
String infoArr[] = info.split("-");
out:for (int j = 0; j < infoArr.length; j++) {
student[i][j] = infoArr[j]; //배열에 값 할당
if (j > 0) { //점수에 해당하는 배열이 숫자가 아닐때 다시 받기
//숫자일경우
if ((int)infoArr[j].charAt(0) < 59 && (int)infoArr[j].charAt(0) > 46) {
// 0 ~ 100인지 판별
int temp;
temp = Integer.parseInt(infoArr[j]);
if (temp > 100 || temp < 0) {
System.out.println("점수는 0 ~ 100사이의 숫자를 입력해주세요.");
i--;
break out;
}
}
// 숫자가 아닐경우
else {
System.out.println("숫자가 아닙니다.");
i--;
break out;
}
}
}
}
for (int i = 0; i < student.length; i++) {
for (int j = 0; j < student[i].length; j++) {
// 이름
if (j == 0) {
System.out.println("이름 : " + student[i][j]);
}
// 점수
else {
System.out.println(subject[j-1]+" : "+student[i][j]);
//총합
sum += Integer.parseInt(student[i][j]);
//최대
if (max < Integer.parseInt(student[i][j])) {
max = Integer.parseInt(student[i][j]);
}
//최소
if (min > Integer.parseInt(student[i][j])) {
min = Integer.parseInt(student[i][j]);
}
}
}
System.out.println();
}
// 평균
avg = sum / student.length;
System.out.println("총합 : "+ sum);
System.out.println("평균 : "+ avg);
System.out.println("최대 : "+ max);
System.out.println("최소 : "+ min);
sc.close();
}
}
728x90
반응형
'공부노트 > 개인공부!' 카테고리의 다른 글
[Java, 자바] 2진수, 10진수, 16진수 계산기 (2) | 2020.05.26 |
---|---|
[Java, 자바] 트럼프카드 (52장) (0) | 2020.05.26 |
[Java, 자바] 성적 통계프로그램 (0) | 2020.05.26 |
[Java, 자바] 로또숫자 생성기(lotto) (0) | 2020.05.24 |
[Java ,자바] 랜덤숫자 맞추기 (random number game) (0) | 2020.05.24 |
Comments