괄호가 있으면 함수
package class02;
import java.util.Scanner;
class Student {
String name;
int score;
Student(String name,int score){
this.name=name;
this.score=score;
}
void printInfo() {
System.out.println(this.name+" 학생은 "+this.score+"점입니다.");
}
// setter : 멤버의 값을 변경하는 메서드
// input O output X
// void setXxx(input)
void setName(String name) {
this.name = name;
}
void setScore(int score) {
this.score = score;
}
}
public class Test01 {
public static int checkNum(int index) { // 2. 함수외부에서 값 받아오기
Scanner sc=new Scanner(System.in); // 1. 함수내에서 직접 선언
int num; // 유효범위(scope) 이슈
while(true) { // 유효성 검사
System.out.print("학생의 번호입력 >> ");
num = sc.nextInt();
if(1<=num && num<=index) { // 종료조건
break;
}
System.out.println("다시 입력해주세요!");
}
return num-1;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
Student[] datas = new Student[3];
int index = 0; // 현재 배열에 저장된 학생의 수
datas[index++] = new Student("티모",90); // 샘플 데이터
datas[index++] = new Student("모르가나",65);
while(true) {
System.out.println("----------");
System.out.println("1. 전체출력");
System.out.println("2. 학생이름변경");
System.out.println("3. 학생점수변경");
System.out.println("4. 학생추가");
System.out.println("5. 번호검색"); // 1명출력
System.out.println("6. 이름검색");
System.out.println("7. 성적검색");
System.out.println("8. 1등출력");
System.out.println("0. 프로그램 종료");
System.out.println("----------");
System.out.print(">> ");
int command = sc.nextInt();
if(command<0 || 8<command) { // 유효성 검사
System.out.println("잘못된 입력입니다!");
continue;
}
if(command == 0) { // 무한루프 + 종료조건
System.out.println("프로그램 종료");
break;
}
else if(command == 1) {
if(index <= 0) {
System.out.println("출력할 학생이 없습니다!");
continue;
}
for(int i=0;i<index;i++) {
datas[i].printInfo();
}
}
else if(command == 2) {
int num = checkNum(index);
System.out.print("변경할 이름입력 >> ");
String name=sc.next();
datas[num].setName(name);
System.out.println("변경완료!");
}
else if(command == 3) {
int num = checkNum(index);
System.out.print("변경할 점수입력 >> ");
int score=sc.nextInt();
datas[num].setScore(score);
System.out.println("변경완료!");
}
else if(command == 4) {
System.out.print("추가할 학생의 이름입력 >> ");
String name=sc.next();
System.out.print("추가할 학생의 성적입력 >> ");
int score=sc.nextInt();
datas[index++]=new Student(name,score);
System.out.println("학생 추가 완료!");
}
else if(command == 5) {
int num = checkNum(index);
datas[num].printInfo(); // 응집도 높임
}
else if(command == 6) {
System.out.print("검색어 입력 >> ");
String keyword = sc.next();
boolean flag = false;
for(int i=0;i<index;i++) {
if(datas[i].name.contains(keyword)) {
datas[i].printInfo();
flag = true;
}
}
if(!flag) {
System.out.println("검색결과가 없습니다!");
}
}
else if(command == 7) {
System.out.print("검색할 성적입력 >> ");
int score = sc.nextInt();
boolean flag = false;
for(int i=0;i<index;i++) {
if(score <= datas[i].score) {
datas[i].printInfo();
flag = true;
}
}
if(!flag) {
System.out.println("검색결과가 없습니다!");
}
}
else if(command == 8) {
// 최대값 찾기 알고리즘
int max = datas[0].score;
int maxIndex = 0;
for(int i=1;i<index;i++) {
if(max < datas[i].score) {
max = datas[i].score;
maxIndex = i;
}
}
System.out.println("1등은 "+(maxIndex+1)+"번학생 "+datas[maxIndex].name+"입니다.");
//////////
max = datas[0].score;
for(int i=1;i<index;i++) {
if(max < datas[i].score) {
max = datas[i].score;
}
}
for(int i=0;i<index;i++) {
if(datas[i].score == max) {
datas[i].printInfo();
}
}
}
}
}
타자연습 코드 따라치기
'수업 복습' 카테고리의 다른 글
| Java interface 복습 (0) | 2025.10.26 |
|---|---|
| Java Thread & MVC (0) | 2025.10.24 |
| 복습 Java 이론 (0) | 2025.10.20 |
| 간이 팀프로젝트 (주민 상호작용 프로그램 구현) (0) | 2025.10.16 |
| Day1(OT + java 기초) (0) | 2025.09.19 |