Java 성적 입력 프로그램 리뷰 (참조 변수, 문자열 비교 equals)

2023. 1. 8. 16:37·BE/Java [Servlet , Spring]

전체코드 3개로 나누어서 리뷰!

-> 참고로 나눈 코드 3개를 모두 붙여야 정상 작동된다

- 입력한 숫자에 따라 메뉴를 조회하고 각 메뉴별 프로그램을 실행 -

1번: 성적입력 (이름, 국어점수, 수학점수, 영어점수)

2번: 성적조회

0번: 프로그램 종료

 

< JAVA 성적 입력 프로그램 >

package ex03;

import java.util.Scanner;

public class Example02 {

	public static void execute() {
		Scanner s = new Scanner(System.in);
				
		String[] name = new String[100]; 
		int[] kor = new int[100]; 
		int[] eng = new int[100];
		int[] math = new int[100];
		
		int count = 0; 
        
        	boolean run = true;
						
		while(run) {
			System.out.println("------------------------------------");
			System.out.println("1. 성적입력|2.성적조회|0.프로그램종료");
			System.out.println("------------------------------------");
			System.out.print("선택>");
			
			int menu = s.nextInt();

1. 입력한 값을 받아올 스캐너 생성

* 맨 위에 import java.util Scanner 말고  import java.util *을 작성하면 자바 클래스의 모든 유틸을 가져와주어 편리하다.

2. 받아올 데이터들의 배열을 각각 사이즈 100(멕시멈 값)으로 생성해 준다. - 이름, 국어점수, 영어점수, 수학점수

3.  int count  =  0; 으로 배열의 크기를 지정할 count 변수에 초기값으로 0을 넣어준다.

**배열의 크기를 미리 0으로 담아둬야 for문에서 비교값으로 쓰거나 (i < count) 배열 인덱스 선택할 때 편함

4. 메뉴를 만들고 종료를 누를 때까지 반복시키기 위해 while문 안에 넣어준다.

5.  boolean 변수에 true값을 넣어 while문에 담아줘야 0번(종료버튼)을 입력했을 때 false로 빠져나올 수 있다(중단)

    switch(menu) {
        case 0:
            run = false;
            break;

        case 1:
            System.out.print("이름>");
            name[count] = s.next();

            System.out.print("국어점수>");
            kor[count] = s.nextInt();

            System.out.print("영어점수>");
            eng[count] = s.nextInt();

            System.out.print("수학점수>");
            math[count] = s.nextInt();

            count = count+1;
            System.out.println(count + "명이 입력되었습니다.");
            break;

6. while문 안에 switch~case문을 넣어 각 메뉴의 번호를 입력했을 때 해당 메뉴가 실행되도록 프로그래밍할 수 있다.

6-1) case 0 : 프로그래밍 종료

->  run = false는 while문을 빠져나가기 위해 씀, break는 switch문 빠져가가기 위해 씀(break는 default제외하고 모든 case에 씀)

6-2) case 1:  성적 입력

->  System.out.print(">이름")등 으로 각 데이터 입력 창을 사용자에게 보여주기 위해 작성

->  name[count] = s.next(); 등으로 각각의 변수의 해당 인덱스(count)에 데이터를 입력하기 위해 next( ); nextInt( );사용

-> 데이터를 입력했으면 다음 입력했을 때 번호를 바꿔주기 위해 count = count+1 해준다. (2번 다음에 3번에 입력되게끔)

-> 아래에 총 입력된 데이터를 표시해주기 위해 sysout으로 입력창 생성 

    case 2:
        System.out.print("조회할 이름>");
        String sname = s.next();
        boolean find = false;
        for(int i = 0; i < count ; i++) {
            if(name[i].equals(sname)) {
                System.out.println("국어:"+kor[i]);
                System.out.println("영어:"+eng[i]);
                System.out.println("수학:"+math[i]);
                find = true;
            }
        }
            if(find==false) {
                System.out.println("해당 학생이 없습니다."); 
            }
        break;

         default:
            System.out.println("잘못 입력하셨습니다!");							
        }

}//while문 종료

System.out.println("프로그램 종료!");

}
}

6-3) case 2:  성적 조회

-> 조회할 이름을 입력할 창을 생성하기 위해 s.next(); 를 String 타입의 sname에 담아준다. sysout은 표시해주기 위해 작성

-> for문에서 해당 이름을 찾았을 경우(true) 찾지 못했을 경우(false)로 나누어 조건을 실행해주기 위해 boolean find의 초기값을 false로 둔다. *처음에 true로 두면 아래 false를 실행시키지 못함

-> for문으로 배열의 0번째 인덱스부터 count-1번째까지 반복하여 해당되는 이름을 찾고 찾으면 boolean = true로 바꿔 해당 이름의 국어, 영어, 수학 점수를 도출한다.

-> sname(입력한이름)과 name[i] (목록에 존재하는 이름)을 비교하기 위해 equals메서드를 사용한다. 

*  equals를 쓸 때 비교할 값들의 위치는 서로 변환해도 되며 equals는 string타입을 비교할 때만 사용한다(int 등 사용불가)

-> find==false 해당 사람을 찾지 못하면 "해당 학생이 없습니다" 문구를 표시한다.

* 메뉴1을 선택해 성적을 입력한 뒤 메뉴2를 실행하면 이미 count++되어 있기 때문에 입력한 데이터가 추가된 전체 목록이 출력된다.

7. 프로그램 종료 알림은 while문 반복이 끝난 후 실행되어야 하기 때문에 바깥에 sysout으로 "프로그램 종료!" 문구를 생성한다.

 

각 메뉴 번호를 선택했을 때 콘솔창은 위와 같이 실행된다.

'BE > Java [Servlet , Spring]' 카테고리의 다른 글

Java 배열의 합계 및 최대&최소 값 구하기 (Sum, Max, Min)  (0) 2023.01.09
Java 상품 관리 프로그램 리뷰(DecimalFormat, integer parseInt)  (0) 2023.01.08
자바 배열(array) -배열 구조 및 합계 구하기  (0) 2023.01.06
자바 조건문- if문, switch~case문  (0) 2023.01.03
자바 출력문(print , printf, printInt)함수 및 지시자 %n %s %d..  (1) 2023.01.02
'BE/Java [Servlet , Spring]' 카테고리의 다른 글
  • Java 배열의 합계 및 최대&최소 값 구하기 (Sum, Max, Min)
  • Java 상품 관리 프로그램 리뷰(DecimalFormat, integer parseInt)
  • 자바 배열(array) -배열 구조 및 합계 구하기
  • 자바 조건문- if문, switch~case문
시녜's
시녜's
성장중인 새싹 개발자 🌱
  • 시녜's
    개발기록
    시녜's
  • 전체
    오늘
    어제
    • 분류 전체보기
      • FE
        • React
        • javascript(jQuery)
        • HTML & CSS
      • BE
        • Java [Servlet , Spring]
        • C & C++
        • Node.js
        • node.js
        • SQL (Oracle, mysql)
      • CS
        • 프로그래밍 이론(정보처리기사)
      • Etc
        • 코딩 챌린지
        • 개발 성장 일지
        • 코딩테스트
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    코테기초
    프로그래밍
    Java
    제이쿼리
    React
    html
    백준코딩테스트
    코테
    스프링
    CharAt함수
    백준
    jquery
    백준단계별문제
    mysql
    백준문제풀이
    자바문자열
    javascript
    자바반복문
    리액트
    자바기초
    코딩테스트입문
    자바
    자바배열
    코딩입문
    코딩기초
    백준브론즈
    코딩테스트
    jsp
    자바조건문
    자바스크립트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
시녜's
Java 성적 입력 프로그램 리뷰 (참조 변수, 문자열 비교 equals)
상단으로

티스토리툴바