JAVA/수업 복습
자바 공부기록 29 - 메소드 예제
본이qq
2022. 4. 20. 18:49
● 메서드 return 예제 - 원의 넓이와 둘레
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
package days18;
import java.util.Scanner;
public class Method09 {
public static void main(String[] args) {
int ban;
double n, d;
Scanner sc = new Scanner(System.in);
System.out.print("반지름을 입력하세요: ");
ban = sc.nextInt();
n = calculate1(ban); // 원의 넓이를 구하는 메서드
d = calculate2(ban); // 원의 둘레를 구하는 메서드
prn(n,d); //넓이와 둘레를 출력하는 메서드
}
public static double calculate1(int r) {
/*double a;
a = r*r*3.14;
return a;
*/
return r*r*3.14; //리턴 옆에 연산식을 넣어서 연산의 결과를 리턴되게 할 수 있습니다
}
public static double calculate2(int r) {
/*double b;
b = 2*r*3.14;
return b;
*/
return 2*r*3.14;
}
public static void prn(double a,double b) {
System.out.printf("원의 넓이 : %.2f , 원의 둘레 : %.2f", a,b);
}
}
|
cs |
Point - 'return 변수' 하지않고, 바로 return 옆에 연산식을 넣어서 결과를 리턴할 수 있음
● 메서드 return 예제 - boolean값 리턴 (평년, 윤년 출력)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
package days18;
import java.util.Scanner;
public class Method10 {
public static void main(String[] args) {
int year;
boolean a;
Scanner sc = new Scanner(System.in);
System.out.println("년도 입력 :");
year = sc.nextInt();
a = yoon(year); //년도를 전달인수로 전달하여 윤년이면 true, 평년이면 false를 리턴
prn(a); //변수 a값을 전달받아 윤년 또는 평년을 출력하는 메서드
}
public static boolean yoon(int a) {
if(a%4==0&& a%100!=0 || a%400==0) return true;
else return false;
}
public static void prn(boolean b) {
if(b==true) System.out.println("윤년입니다.");
else System.out.println("평년입니다");
}
}
|
cs |
Point - boolean값 true/false도 똑같이 return할 수 있다.
그리고 boolean 변수를 생성하고 그 안에 true/false값을 일일이 넣어서 보내지 않고
바로 return true 혹은 return false를 할 수 있다.
● 삼각형의 넓이를 계산 - Scanner sc 명령을 넣은 메서드를 생성하기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
package days18;
import java.util.Scanner;
public class Method11 {
public static void main(String[] args) {
// 밑변과 높이를 입력받아서 삼각형의 넓이를 계산하여 출력 (메서드 사용)
int a,b;
double c;
a = myInput(1); //밑변을 입력 받음. "밑변을 입력하세요"라고 안내 //()안에 1을 입력하면 밑변을 입력하라는 안내 실행
b = myInput(2); //높이를 입력 받음 "높이를 입력하세요"라고 안내
c = calculate(a,b); //넓이를 계산
prn(c); //넓이 출력
}
public static int myInput(int m) {
Scanner sc = new Scanner(System.in);
if(m==1)
System.out.printf("밑변을 입력하세요 : ");
else System.out.printf("높이를 입력하세요 : ");
//m = sc.nextInt();
//return m;
return sc.nextInt(); //sc.nextInt() 로 입력받은 값을 변수에 저장하지 않고 바로 return
}
public static double calculate(int m, int n) {
return (m*n)/2;
}
public static void prn(double c) {
System.out.printf("넓이는 %.2f 입니다",c);
}
}
|
cs |
Point - 전달인수 값이 메서드 내의 if문의 조건으로 쓰일 수 있다.
● Call by Reference 예제 (참조변수에 의한 호출)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
package days18;
public class Method13 {
public static void main(String[] args) {
int [] a = {56, 87, 96, 59, 25, 48, 13, 33, 65};
int tot = 0;
double avg;
tot = sum(a); //배열의 합계를 계산하여 리턴하는 메서드
avg = average(a); // 배열의 평균을 계산하여 리턴하는 메서드
prn(a, tot, avg); //배열의 요소와 합계, 평균 출력
}
public static int sum( int [] b) {
int tot=0;
for(int i=0; i<b.length; i++)
tot += b[i];
return tot;
}
public static double average(int [] b) {
return sum(b)/(double)b.length;
}
public static void prn(int [] b, int tot, double avg) {
System.out.printf("배열의 값들 : ");
for(int k :b )System.out.printf("%d ", k);
System.out.println();
System.out.printf("배열의 합계 : %d 배열의 평균 : %.2f", tot,avg);
}
}
|
cs |
Point - int [] b; 는 배열변수 b를 '생성'하는 내용이다. 따라서 이미 선언하고 나서는
b (변수명)만 써주면 된다. // sum(int [] b)로 메소드를 호출하려다 계속 실패함
그리고 일차원 배열을 정수형 변수 k에 넣어 반복문으로 출력할 수 있다는거 잊지말기
for(int k : b) System.out.printf("%d ",k);