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==0return true;
        else return  false;
        
        
    
    }
    
    public static void prn(boolean b) {
        if(b==trueSystem.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 = {568796592548133365};
        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);