Notice
Recent Posts
Recent Comments
Link
drexqq
[Java, 자바] 성적 통계프로그램 본문
728x90
반응형
Java를 이용해서 성적 통계프로그램을 만들어보았다.
학생 수 = 동적 할당
과목 수 = 4과목 ( 이름과 과목을 따로 받는다 )
결과
학생의 과목당 점수/합계/평균/모든 점수의 최댓값/모든 점수의 최솟값
모든 점수는 0 ~ 100 사이의 숫자로만 받을 수 있다.
코드
package work0525;
import java.util.Scanner;
public class Work04 {
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 num = sc.nextInt();
// 과목 이름
String subject[] = { "C", "C++", "C#", "Java" };
// 과목 점수
String subNum[] = new String[subject.length];
// 학생정보
String student[][] = new String[num][5];
String name;
int sum = 0, min = 100, max = 0;
Double avg;
for (int i = 0; i < student.length; i++) {
System.out.println("학생 이름을 입력해주세요.");
name = sc.next();
// 이름 해당 배열 첫 칸에 저장
student[i][0] = name;
int c = 0;
boolean pass = false;
while (!pass) {
System.out.println(subject[c] + "과목의 점수를 입력해주세요.");
subNum[c] = sc.next();
// 받은 과목별점수 배열에 저장
// 제일 첫 칸은 이름이기때문에 + 1
student[i][c+1] = subNum[c];
out:for (int j = 0; j < subNum[c].length(); j++) {
// 점수에 문자껴있음
for (int k = 0; k < subNum[c].length(); k++) {
if ((int) subNum[c].charAt(k) < 47 || (int) subNum[c].charAt(k) > 57) {
System.out.println("점수는 숫자만 입력해주세요.");
j--;
break out;
}
}
// 점수판별 0 ~ 100
int temp = Integer.parseInt(subNum[c]);
if (temp > 100 || temp < 0) {
System.out.println("점수는 0 ~ 100점 사이입니다 !");
j--;
break;
} else {
c++;
break;
}
}
// 탈출 - 과목수만큼 반복되었으면 종료
if (c == subject.length) {
pass = true;
}
}
}
// 학생별 과목 점수
for (int i = 0; i < student.length; i++) {
for (int j = 1; j < student[i].length; j++) {
System.out.print(student[i][0]+"학생의 "+subject[j-1]+" 점수는 "+student[i][j]+"점 입니다. \n");
//합계
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]);
}
}
}
//평균
avg = Double.valueOf(sum / num);
System.out.println("평균은 "+avg+"점입니다");
System.out.println("합계는 "+sum+"점입니다");
System.out.println("최대 점수는 "+max+"점입니다");
System.out.println("최소 점수는 "+min+"점입니다");
}
}
728x90
반응형
'공부노트 > 개인공부!' 카테고리의 다른 글
[Java, 자바] 트럼프카드 (52장) (0) | 2020.05.26 |
---|---|
[Java, 자바] 성적 통계프로그램.ver2 (0) | 2020.05.26 |
[Java, 자바] 로또숫자 생성기(lotto) (0) | 2020.05.24 |
[Java ,자바] 랜덤숫자 맞추기 (random number game) (0) | 2020.05.24 |
[Java, 자바] 숫자야구(baseball game) (0) | 2020.05.24 |
Comments