1번을누르면. 입력
몇반에 입력 하겠습니까?
몇반 누구 국영수 추가 후 다시 1 번 2번 물음으로
2번을 누르면. 출력
1.전체 출력-성적순출력 2. 반출력
3번 검색
1.이름으로 검색(동명이은도 검색)
2. 성적으로 검색 (1.국2.영3.수4.총)
1. 다음 점수를 입력 그러면 국어 90점입력하면 90점이상인 사람들 출력
4.종료SYSTEM.EXIT
import java.util.Scanner;
public class Day4Task {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String [][]name; //name
int [][][]score; //kor eng math total
float [][]avg;
String []subject= {"국어","영어","수학","총점"};
System.out.println("학교에 몇반있습니까?");
int num=sc.nextInt(); // class 개수입력
name=new String[num][50];
score=new int[num][50][4];
avg=new float[num][50];
for(;;) {//무한루프
System.out.println("1.입력 2.출력 3. 검색4. 종료");
int c=sc.nextInt(); // 번호 선택
if(c==1) {//입력
System.out.println("몇반에 정보를 추가할것입니까?");
int n=sc.nextInt()-1;// 어떤반에 정보를 입력할껀지 입력 배열은0반부터 시작하기때문 -1함
for(int i=0;i<name[n].length;i++) {
if(name[n][i]==null) {
System.out.println("이름입력");
name[n][i]=sc.next();
System.out.println("국어성적 입력");
score[n][i][0]=sc.nextInt();
System.out.println("영어성적 입력");
score[n][i][1]=sc.nextInt();
System.out.println("수학성적 입력");
score[n][i][2]=sc.nextInt();
score[n][i][3]=score[n][i][0]+score[n][i][1]+score[n][i][2]; //총점
avg[n][i]=score[n][i][3]/3.f;//평균
break;
}
}
}else if(c==2) {//출력
System.out.println("1.전체출력 2. 반출력");
int c1=sc.nextInt();
if(c1==1) {// 전체출력
for(int i=0;i<name.length;i++) {
System.out.println(i+1+"반");
for(int j=0;j<name[i].length;j++) {
for(int k=j+1;k<name[i].length;k++) {
if(avg[i][k]>avg[i][j]) {//성적 높은순 정렬 bubble sort
String str=name[i][j];
name[i][j]=name[i][k];
name[i][k]=str;
//국어성적
int temp=score[i][j][0];
score[i][j][0]=score[i][k][0];
score[i][k][0]=temp;
//영어성적
temp=score[i][j][1];
score[i][j][1]=score[i][k][1];
score[i][k][1]=temp;
//수학성적
temp=score[i][j][2];
score[i][j][2]=score[i][k][2];
score[i][k][2]=temp;
//총점
temp=score[i][j][3];
score[i][j][3]=score[i][k][3];
score[i][k][3]=temp;
//평균
float trash=avg[i][j];
avg[i][j]=avg[i][k];
avg[i][k]=trash;
}
}
if(name[i][j]!=null) {
System.out.print(name[i][j]+": ");
for(int k=0;k<score[i][j].length;k++) {
System.out.print(subject[k]+": "+score[i][j][k]+":점\t");
}
System.out.println("평균: "+avg[i][j]+":점");
}
}
}
}else if(c1==2) {// 반출력
System.out.println("몇반 출력?");
int wCl=sc.nextInt()-1;// 배열은 0부터시작하는걸 생각해서 -1
for(int i=0;i<name[wCl].length;i++) {
if(name[wCl][i]!=null) {
System.out.print(name[wCl][i]+": ");
for(int k=0;k<score[wCl][i].length;k++) {
System.out.print(subject[k]+": "+score[wCl][i][k]+":점\t");
}
System.out.println("평균: "+avg[wCl][i]+":점");
}
}
}
}else if(c==3) {//검색
System.out.println("1.이름검색 2.성적검색");
int c1=sc.nextInt();
if(c1==1) {//이름검색
System.out.println("이름을 검색하시오");
String findName=sc.next();
for(int i=0;i<name.length;i++) {
for(int j=0;j<name[i].length;j++) {
if(findName.equals(name[i][j])) {//입력한 이름과 name[i]에있는 이름들을 비교해서 있으면 출력
System.out.print(name[i][j]+": ");
for(int k=0;k<score[i][j].length;k++) {
System.out.print(subject[k]+": "+score[i][j][k]+":점\t");
}
System.out.println("평균: "+avg[i][j]+":점");
}
}
}
}else if(c1==2) {//성적검색
System.out.println("1.국어 2. 영어 3. 수학 4.총점");
int c2=sc.nextInt()-1; //배열저장햇을때는 국어가 0 영어가 1 수학2 총점 3 이기때문 -1함
System.out.println("몇점 이상성적만 검색할거니?");
int findScore=sc.nextInt();
for(int i=0;i<name.length;i++) {
for(int j=0;j<name[i].length;j++) {
if(name[i][j]!=null&&findScore<=score[i][j][c2]) {// 이름에 값이 있어야하고 그리고 내가 찾고싶은 점수와 성적들을 비교한다
System.out.print(name[i][j]+": ");
System.out.print(score[i][j][c2]+":점\t");
}
}
}
System.out.println();
}
}else if(c==4) {// 프로그램 종료
System.exit(-1);
}
}
}
}
아래는 콘솔로 실행한 결과이다.
학교에 몇반있습니까?
3
1.입력 2.출력 3. 검색4. 종료
1
몇반에 정보를 추가할것입니까?
1
이름입력
박종현
국어성적 입력
40
영어성적 입력
30
수학성적 입력
20
1.입력 2.출력 3. 검색4. 종료
1
몇반에 정보를 추가할것입니까?
1
이름입력
김김김
국어성적 입력
50
영어성적 입력
60
수학성적 입력
60
1.입력 2.출력 3. 검색4. 종료
1
몇반에 정보를 추가할것입니까?
2
이름입력
류류류
국어성적 입력
30
영어성적 입력
40
수학성적 입력
20
1.입력 2.출력 3. 검색4. 종료
1
몇반에 정보를 추가할것입니까?
3
이름입력
다
국어성적 입력
50
영어성적 입력
40
수학성적 입력
40
1.입력 2.출력 3. 검색4. 종료
2
1.전체출력 2. 반출력
1
1반
김김김: 국어: 50:점 영어: 60:점 수학: 60:점 총점: 170:점 평균: 56.666668:점
박종현: 국어: 40:점 영어: 30:점 수학: 20:점 총점: 90:점 평균: 30.0:점
2반
류류류: 국어: 30:점 영어: 40:점 수학: 20:점 총점: 90:점 평균: 30.0:점
3반
다: 국어: 50:점 영어: 40:점 수학: 40:점 총점: 130:점 평균: 43.333332:점
1.입력 2.출력 3. 검색4. 종료
2
1.전체출력 2. 반출력
2
몇반 출력?
2
류류류: 국어: 30:점 영어: 40:점 수학: 20:점 총점: 90:점 평균: 30.0:점
1.입력 2.출력 3. 검색4. 종료
3
1.이름검색 2.성적검색
1
이름을 검색하시오
박종현
박종현: 국어: 40:점 영어: 30:점 수학: 20:점 총점: 90:점 평균: 30.0:점
1.입력 2.출력 3. 검색4. 종료
3
1.이름검색 2.성적검색
2
1.국어 2. 영어 3. 수학 4.총점
1
몇점 이상성적만 검색할거니?
40
김김김: 50:점 박종현: 40:점 다: 50:점
1.입력 2.출력 3. 검색4. 종료
4
몰입형 4일차.. 너무 힘들다. 기초가 탄탄해지는 느낌이다.
***수정 삭제 기능 추가
import java.util.Scanner;
public class Day4Task {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String [][]name; //name
int [][][]score; //kor eng math total
float [][]avg;
String []subject= {"국어","영어","수학","총점"};
System.out.println("학교에 몇반있습니까?");
int num=sc.nextInt(); // class 개수입력
name=new String[num][50];
score=new int[num][50][4];
avg=new float[num][50];
for(;;) {//무한루프
System.out.println("1.입력 2.출력 3. 검색4. 삭제 5. 종료");
int c=sc.nextInt(); // 번호 선택
if(c==1) {//입력
System.out.println("몇반에 정보를 추가할것입니까?");
int n=sc.nextInt()-1;// 어떤반에 정보를 입력할껀지 입력 배열은0반부터 시작하기때문 -1함
for(int i=0;i<name[n].length;i++) {
if(name[n][i]==null) {
System.out.println("이름입력");
name[n][i]=sc.next();
System.out.println("국어성적 입력");
score[n][i][0]=sc.nextInt();
System.out.println("영어성적 입력");
score[n][i][1]=sc.nextInt();
System.out.println("수학성적 입력");
score[n][i][2]=sc.nextInt();
score[n][i][3]=score[n][i][0]+score[n][i][1]+score[n][i][2]; //총점
avg[n][i]=score[n][i][3]/3.f;//평균
break;
}
}
}else if(c==2) {//출력
System.out.println("1.전체출력 2. 반출력");
int c1=sc.nextInt();
if(c1==1) {// 전체출력
for(int i=0;i<name.length;i++) {
System.out.println(i+1+"반");
for(int j=0;j<name[i].length;j++) {
for(int k=j+1;k<name[i].length;k++) {
if(avg[i][k]>avg[i][j]) {//성적 높은순 정렬 bubble sort
String str=name[i][j];
name[i][j]=name[i][k];
name[i][k]=str;
//국어성적
int temp=score[i][j][0];
score[i][j][0]=score[i][k][0];
score[i][k][0]=temp;
//영어성적
temp=score[i][j][1];
score[i][j][1]=score[i][k][1];
score[i][k][1]=temp;
//수학성적
temp=score[i][j][2];
score[i][j][2]=score[i][k][2];
score[i][k][2]=temp;
//총점
temp=score[i][j][3];
score[i][j][3]=score[i][k][3];
score[i][k][3]=temp;
//평균
float trash=avg[i][j];
avg[i][j]=avg[i][k];
avg[i][k]=trash;
}
}
if(name[i][j]!=null) {
System.out.print(name[i][j]+": ");
for(int k=0;k<score[i][j].length;k++) {
System.out.print(subject[k]+": "+score[i][j][k]+":점\t");
}
System.out.println("평균: "+avg[i][j]+":점");
}
}
}
}else if(c1==2) {// 반출력
System.out.println("몇반 출력?");
int wCl=sc.nextInt()-1;// 배열은 0부터시작하는걸 생각해서 -1
for(int i=0;i<name[wCl].length;i++) {
if(name[wCl][i]!=null) {
System.out.print(name[wCl][i]+": ");
for(int k=0;k<score[wCl][i].length;k++) {
System.out.print(subject[k]+": "+score[wCl][i][k]+":점\t");
}
System.out.println("평균: "+avg[wCl][i]+":점");
}
}
}
}else if(c==3) {//검색
System.out.println("1.이름검색 2.성적검색");
int c1=sc.nextInt();
if(c1==1) {//이름검색
System.out.println("이름을 검색하시오");
String findName=sc.next();
for(int i=0;i<name.length;i++) {
for(int j=0;j<name[i].length;j++) {
if(findName.equals(name[i][j])) {//입력한 이름과 name[i]에있는 이름들을 비교해서 있으면 출력
System.out.print(name[i][j]+": ");
for(int k=0;k<score[i][j].length;k++) {
System.out.print(subject[k]+": "+score[i][j][k]+":점\t");
}
System.out.println("평균: "+avg[i][j]+":점");
}
}
}
}else if(c1==2) {//성적검색
System.out.println("1.국어 2. 영어 3. 수학 4.총점");
int c2=sc.nextInt()-1; //배열저장햇을때는 국어가 0 영어가 1 수학2 총점 3 이기때문 -1함
System.out.println("몇점 이상성적만 검색할거니?");
int findScore=sc.nextInt();
for(int i=0;i<name.length;i++) {
for(int j=0;j<name[i].length;j++) {
if(name[i][j]!=null&&findScore<=score[i][j][c2]) {// 이름에 값이 있어야하고 그리고 내가 찾고싶은 점수와 성적들을 비교한다
System.out.print(name[i][j]+": ");
System.out.print(score[i][j][c2]+":점\t");
}
}
}
System.out.println();
}
}else if(c==4) {// 삭제
System.out.println("삭제할 이름을 입력하시오");
String findName=sc.next();
for(int i=0;i<name.length;i++) {
for(int j=0;j<name[i].length;j++) {
if(findName.equals(name[i][j])) {//입력한 이름과 name[i]에있는 이름들을 비교
name[i][j]=null;
for(int k=0;k<score[i][j].length;k++) {
score[i][j][k]=0;
}
avg[i][j]=0;
}
}
}
}else if(c==5) {// 프로그램 종료
System.exit(-1);
}
}
}
}'Java기초' 카테고리의 다른 글
| [JAVA] Class 관계 (has~ a) 포함오브젝트 활용 (0) | 2022.06.30 |
|---|---|
| [Java]클래스활용 성적관리프로그램(getter and setter)+has ~ a관계이해 (0) | 2022.06.28 |
| [Java] 2,3차원배열 For문활용 + foreach문 활용 실습 (0) | 2022.06.24 |
| [Java]while,do while 문 활용(For문에서 while문으로 변경) (0) | 2022.06.23 |
| [Java] Eclipse 단축키 (0) | 2022.06.23 |
댓글