함수이름(매개변수);
함수이름(인수);
매개변수를 인수라고 하기도 함.
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;
}
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;