0318 함수, 참조자료형

Fifty·2025년 3월 18일

2. JAVA

목록 보기
6/33

함수이름(매개변수);
함수이름(인수);
매개변수를 인수라고 하기도 함.

  main(){
		f2();
  }
  
  f1(int n){
  }
  
  f2(){
		f1();
  }

main()은 f2()를 호출하고 f2()는 f1()을 호출한다.
return 값이 있다면 호출한 함수에게 돌려준다.
*return 값은 무조건 하나만 보낼 수 있다.

[예제]
main()에 int n1, n2가 있다.
main()이 f()에게 n1과 n2를 주면, n1+n2, n1-n2를 main()에게 돌려준다.
단, f()함수는 하나다.

1-1. 배열 사용하기

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int n1=10;
		int n2=20;

		int[] a = {n1, n2};
		int[] b = new int[2];
		b=f(a);
		System.out.println("두 수의 합은 "+ b[0]);
		System.out.println("두 수의 차는 "+ b[1]);
		
	}

	static int[] f(int[] a) {
		int add=a[0]+a[1];
		int mi=a[0]-a[1];
		int[] b = {add,mi};
		return b;
	}

1-2. 배열 사용하기2

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int n1=10;
		int n2=20;

		int[] b = new int[2];
		b=f(n1, n2);
		System.out.println("두 수의 합은 "+ b[0]);
		System.out.println("두 수의 차는 "+ b[1]);
		
	}

	static int[] f(int a, int b) {
		int add=a+b;
		int mi=a-b;
		int[] arr = {add,mi};
		return arr;
	}
  1. static 변수 사용하기
	static int add;
	static int mi;
	
    public static void main(String[] args) {
		// TODO Auto-generated method stub
		int n1=10;
		int n2=20;
				
		f(n1, n2);
		System.out.println("두 수의 합은 "+ add);
		System.out.println("두 수의 차는 "+ mi);
		
	}
	
	static void f(int a, int b){
		add = a+b;
		mi = a-b;
	}

[예제] 결과는 A가 20개 프린트
(결과)
AAAAAAAAAAAAAAAAAAAA

----END----

(코드 채우기)

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int n = 20;
		① char x = 'A';
		f(n, x);
		
		System.out.println("----END----");
		
	}
	
    ②static void f(int a, char c) {
		for(int i=0; i<a; i++) {
			System.out.print(c);
		}
		System.out.println("");
		System.out.println("");
	}**

①, ②를 채워주면 결과 값이 나온다.

[예제] 5번째마다 A는 B로 찍히게

	static void f(int a, char c) {
		for(int i=1; i<a; i++) {
			if(i%5==0) {
				System.out.print('B');
				five+=5;
			}
			else
				System.out.print(c);
		}
		System.out.println("");
		System.out.println("");
	}

스위치

	static void f(int x, int y) {
		int temp = x;
		x = y;
		y = temp;
	}

함수 내부 값 스위치

변수가 가지고 있는 값이 주소일 때,
우리는 그 변수를 참조자료형(Reference Data Type)이라고 한다.
참조변수로 하게 될 경우 원본이 바뀐다.

전역변수(Global variable) : 어느 위치에서든 호출하면 사용이 가능
(함수 밖에 선언하여 클래스 전체에서 사용이 가능한 변수)
지역변수(Local variable) : 특정구역({ }) 내에서 생성되어 그 구역에서만 사용
(함수 속에 선언되어 해당 함수 속에서만 사용이 가능한 변수)

	public static void main(String[] args) {
		int[] A = new int[2];
		A[0] = 5;
		A[1] = 3;
		f(A);
		System.out.println("A[0]: "+A[0]);
		System.out.println("A[1]: "+A[1]);
	}
	
	static void f(int[] b) {
		int temp = b[0];
		b[0] = b[1];
		b[1] = temp;
	}

[예제] 가위바위보 게임
(가위1, 바위2, 보3)
1. 랜덤수 만드는 함수
2. 사용자의 입력받는 함수
3. 승패를 비교해서 알려주는 함수
4. 전적 알려주는 함수

package ex01;

import java.util.Random;
import java.util.Scanner;

public class Test0318 {

	public static void main(String[] args) {
		
		int[] result = new int[4]; // 총 게임, 사용자가 이긴 횟수, 사용자가 진 횟수, 비긴 횟수
		
		int input = userInput(); 
		while(input!=0) {
			int rdNum=rdMake();
			judge(rdNum, input, result);
			input = userInput();
		}
		System.out.println("종료합니다.");
	}
	
	static int rdMake() {
		Random rd = new Random();
		int rdNum = rd.nextInt(3)+1;
		return rdNum;
	}
	
	static int userInput() {
		Scanner sc = new Scanner(System.in);
		System.out.println("숫자를 입력하세요(가위1, 바위2, 보3, 종료0)>> ");
		int input = sc.nextInt();
		return input;
	}
	
	static void judge(int rdNum, int input, int[] result) {
		String[] arr = {"가위", "바위", "보"};
		switch(rdNum-input) {
			case -1: System.out.println("컴퓨터는 "+arr[rdNum-1]+"을 냈습니다. 이겼습니다."); result[0]++; result[1]++; break;
			case 2: System.out.println("컴퓨터는 "+arr[rdNum-1]+"을 냈습니다. 이겼습니다."); result[0]++; result[1]++; break;
			case 1: System.out.println("컴퓨터는 "+arr[rdNum-1]+"을 냈습니다. 졌습니다."); result[0]++; result[2]++; break;
			case -2: System.out.println("컴퓨터는 "+arr[rdNum-1]+"을 냈습니다. 졌습니다."); result[0]++; result[2]++; break;
			case 0: System.out.println("컴퓨터는 "+arr[rdNum-1]+"을 냈습니다. 비겼습니다."); result[0]++; result[3]++; break;
		}
		printResult(result);
	}
	
	static void printResult(int[] result) {
		// 전적 출력
		System.out.println("--- GAME RESULT ---");
		System.out.println("총 게임: "+result[0]);
		System.out.println("이긴 횟수: "+result[1]);
		System.out.println("진 횟수: "+result[2]);
		System.out.println("비긴 횟수: "+result[3]);
		System.out.println("--------------------");
	}
}

result를 전역변수로 관리해도 됨.

static int[] result = new int[4];
OR
static int total = 0;
static int win = 0;
static int lose = 0;
static int same = 0;

[지금까지 배운 JAVA 정리]

  • 변수: 자료형 "="
  • 조건문: if~else, switch~case(break;)
    • switch할 때 실수는 근사치라서 사용하면 안됨
  • 반복문: for, while, do~while

0개의 댓글