국비수업/수업정리
배열 이주하기 / 함수
밀김
2023. 3. 7. 12:05
728x90
- 배열을 더큰 배열에 이주하기 위해서는 더 큰 배열을 하나 만들어야한다(tmp만들어서 값 옮기는 과정과 비슷함)
- 값을 옮겨주면 원래 있던 작은 배열은 가비지콜렉터로 이동
- index는 현재 데이터의 개수와 일치한다
- 배열 늘리고,이주하기 코드
Exam[] exams = new Exam[5];
//exams배열을 참조하는 다섯칸짜리 Exam배열 생성
int index = 0;
END: while (true) {
if(index == exams.length) {//공간이 충분한지 또는 여유공간이 잇는지
//인덱스가 exams길이의 최대만큼 됐을때
//공간을 늘리는 코드 작성
Exam[] temp = new Exam[exams.length+3];
//배열을 옮길 큰방을 마련
for(int i=0; i<exams.length; i++)
temp[i] = exams[i];
//큰방 temp에 exams값을 옮긴다
exams = temp;
//temp로 exams를다시 정의해주면서 exams는 가비지 콜렉터로 이동
}
int menu;//switch작동을 위한
{
System.out.println("┌────────────────────────┐");
System.out.println("│ 성적관리 │");
System.out.println("└────────────────────────┘");
Scanner sc = new Scanner(System.in);
System.out.println("번호를 입력해 주세요");
System.out.println("1. 성적 입력");
System.out.println("2. 성적 출력");
System.out.println("3. 성적 저장");
System.out.println("4. 성적 로드");
System.out.println("5. 종료");
System.out.print("번호를 입력해주세요 >");
menu = sc.nextInt();
}
switch (menu) {
case 1:
System.out.println("┌──────────────┐");
System.out.println("┃ 성적입력 ┃");
System.out.println("└──────────────┘");
Scanner sc = new Scanner(System.in);
while (true) {
//int kor = 0;
//int eng = 0;
//int math = 0;
Exam exam = new Exam();
System.out.print("국어 성적을 입력하세요: ");
exam.kor = sc.nextInt();
System.out.print("영어 성적을 입력하세요: ");
exam.eng = sc.nextInt();
System.out.print("수학 성적을 입력하세요: ");
exam.math = sc.nextInt();
//exam.kor = kor;
//exam.eng = eng;
//exmas[index] = new Exam(); 각각 객체를 생성해줌
//반복이 돌때마다 새객체가 만들어진다
index++;
System.out.println("계속하겠습니다 1번, 아니면 그외번호");
menu = sc.nextInt();//메뉴switch문이 다시 작동된다
if(menu==1) { //계속하겠다고하면
continue;//컨티뉴문에 의해 성적 입력으로 다시 돌아간다
}else {
System.out.println("첫화면"); //성적관리로 돌아간다
break; //while break
}
//계속 하쉴?
} //while
break; //case1 break
case 2:
System.out.println("┌──────────────┐");
System.out.println("┃ 성적출력 ┃");
System.out.println("└──────────────┘");
for (int i = 0; i <index; i++) {
Exam exam = exams[i];
int kor = exam.kor;
int eng = exam.eng;
int math = exam.math;
System.out.printf("국어%d : %d\n",i+1,kor);
System.out.printf("영어%d : %d\n",i+1,eng);
System.out.printf("수학%d : %d\n",i+1,math);
}
System.out.println();
break;
}
}
- 함수는 코드를 자르는 능력이 있다. 잘라서 새로운 이름을 부여
- 복잡한 코드에 간단한 이름을 붙여 그 간단한 이름을 따로 제어하는것
- 수학의 함수와 개념은 같고 쓰는 방식만 다르다
- 함수에서 남겨지는값 = 반환값
- 함수정의하는건 클래스 밑에다가 써준다
- 함수명 쓰고 > 반환할 계산식 return붙여서 쓰고 > 반환값의 값형식 쓰기 > 맨앞에 static붙이기
★★★★★★★★암기★★★★★★★★★
package ex6.fun;
public class Exam {
static int sum()
{
return 3+4;
}
public static void main(String[] args) {
int result = sum(); //7은 리턴값
}
}
- 함수 응용
package ex6.fun;
public class Exam {
static int sum()
{
return 3+4;
}
static int add(int a,int b)
{
return a+b;
}
static int sum(int[] nums)//매개인자로 받는다 ( )
{
int sum=0;//초기화 선언을 꼭 해줘야함
for(int i=0; i<nums.length; i++)
sum += nums[i]; //nums의 값을 다 더해야 하니까
return sum;
}
public static void main(String[] args) {
int result = sum();
System.out.printf("sum:%d\n",result);
int x = 3;
int y = 5;
result = add(x,y); //..add(값을 담을 변수,값을 담을 변수) add(int a,int b)
System.out.printf("add:%d\n",result);
int[] nums = {2,4,5,6};
result = sum(nums);
System.out.printf("nums:%d ",result);
}
}
< Setter >
public void setKor(int kor){
this.kor1 = kor;
}
//위에서 매개인자로 받은 kor를 setKor객체kor1에 대입해준다
728x90