프로그래밍

[자바 기초] day05 : 함수 생성 방식 본문

자바/자바 기초

[자바 기초] day05 : 함수 생성 방식

시케 2023. 5. 9. 15:11
728x90
반응형

2023.05.09.화

함수

함수를 작성하는 방식에는 2가지가 있다.

1. 메서드 시그니처를 먼저 만들고 기능을 구현하는 방법

2. 기능을 구현하고  메서드 시그니처를 맞추는 방식이다

 

1.방식으로 함수 선언

// Q1) 어떤 정수가 입력되었을때 짝수인지 판별하는 함수
// input: 정수 output: T/F 기능: 짝수 판별
public static boolean isEven(int num) {
		if (num % 2 == 0) {
			return true;	//함수 즉시종료
		}
		return false;
	}

2.방식으로 함수 선언

// Q2) 어떤 정수가 입력되었을때 음수인지 판별하는 함수
// main에 이미 있는 기능을 가져와서 func()에 넣고 시작	
 public static int checkMinus(int num, int b) {
	if (num < 0) {// 음수
		b++;
	}
	return b;
}

 

1,  2 함수 사용

public static void main(String[] args) {
	if (isEven(num)) {// 짝수
		a++;
	}

	if (num < 0) {// 음수
		b=checkMinus(num,b);
	}
}

 

1 방식이 더욱더 본래의 취지에 맞다고 볼 수 있다

2 방식의 경우 b++의 기능까지 함께 들어가 있다

 

전체코드

package class00;

import java.util.Scanner;

//[ 과제 ]
//1. main()에서 정수를 10번 입력할 예정이다.
//2. 짝수이면 a++;
//3. 음수이면 b++;
//4. 10번 입력완료했습니다. a=ㅁ,b=ㅁ입니다. 라고 출력한다
//5. 만약, 입력된 정수가 0이라면 프로그램을 종료한다
// 		ex) 3번 입력완료했습니다. a=2,b=1입니다.
// 함수를 활용해서 해당 과제를 해결하여라
// 함수는 최대 3개까지 활용할수있다

public class Test01 {

	// 1. 메서드 시그니처 먼저 만들기
	// 2. 기능을 먼저

	// [1] 90퍼
	// Q1) 어떤 정수가 입력되었을때 짝수인지 판별하는 함수
	// input: 정수 output: T/F 기능: 짝수 판별

	public static boolean isEven(int num) {
		if (num % 2 == 0) {
			return true;	//함수 즉시종료
		}
		return false;
	}

	// [2]
	// Q2) 어떤 정수가 입력되었을때 음수인지 판별하는 함수
	// main에 이미 있는 기능을 뜯어서 func()에 넣고 시작
	public static int checkMinus(int num, int b) {
		if (num < 0) {// 음수
			b++;
		}
		return b;
	}
	
	//[1] 방식
	// Q3) 어떤 정수가 입력되었을때 0인지 판별 ---> 종료 안내 함수
	// input: 정수 output: T/F 기능: 종료 안내
	public static boolean check(int num) {
		if (num==0) {
			System.out.println("0이 입력되어 종료합니다...");
			System.out.println();
			return true;
		}
		return false;
	}
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		// 몇번 입력할지 모르기 때문
		int cnt = 0;
		int a = 0;// 짝수의 개수
		int b = 0;// 음수의 개수
		while (cnt < 10) {// 10번 입력할때까지
			System.out.println((cnt + 1) + "번째 정수를 입력하세요"); // 사용자 편의, UI
			System.out.println("입력) ");
			int num = sc.nextInt();

			if (check(num)) {// 0 입력시 종료
				break;
			}
			cnt++;

			if (isEven(num)) {// 짝수
				a++;
			}

			if (num < 0) {// 음수
				b=checkMinus(num,b);
			}

		}
		System.out.println(cnt + "번 입력완료 되었습니다.");
		System.out.println("짝수: " + a + "개");
		System.out.println("음수: " + b + "개");

	}

}

 

활용 예제)

package class00;

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

// 10개의 랜덤정수가 저장된 배열(범위:1~100)이 있다
// 사용자가 정수를 입력 ex) 50
// 50은 [2]에 저장되어있습니다.
// 50은 배열에 없습니다!

public class Test02 {

	// 인풋: int[] 아웃풋: (boolean, )int
	// 기능: 배열에 특정 정수가 있는지, 있다면 몇번인덱스인지
	// => 2개 이상 반환 불가
	// 반환값이 여러 개일 수 없기 때문에 int로 false를 지정
	public static int checkNum(int data[], int num) {
		for (int i = 0; i < data.length; i++) {
			if (data[i] == num) {
				return i;
			}
		}
		return -1; // false를 의미
	}

	public static void main(String[] args) {
		Random rand = new Random();
		Scanner sc = new Scanner(System.in);
		int data[] = new int[10];	//10개의 정수 입력 받을 것이기 때문

		//10개의 랜덤정수 생성
		for (int i = 0; i < data.length; i++) {
			data[i] = rand.nextInt(100) + 1;
		}
		
		//10개의 랜덤정수 출력
		System.out.print("[");
		for (int v : data) {
			System.out.print(v + " ");
		}
		System.out.print("]");
		System.out.println();

		System.out.println("정수 입력) ");
		int num = sc.nextInt();
		int index = checkNum(data, num);// 함수를 적게 호출하기 위함

		if (index < 0) {
			System.out.println(num + "은 배열에 없습니다");
		} else {
			System.out.println(num + "은 [" + index + "]에 저장되어 있습니다.");
		}

	}

}
728x90
반응형
Comments