6주 차 자바 수업 - SangwooRyou/26_Java GitHub Wiki

Remind

두 정수를 입력 받아 합을 출력하는 프로그램.

package day06;
import java.util.Scanner;

public class Add {

	public static void main(String[] args) {
		// 2개 정수를 입력 받아서 더한 결과를 출력하시오.
		Scanner sc = new Scanner(System.in);
		
		int num1, num2, sum;
		
		System.out.print("정수 1 입력 > ");
		num1 = sc.nextInt();
		System.out.print("정수 2 입력 > ");
		num2 = sc.nextInt();
		
		sum = num1 + num2;
		System.out.println(num1 + " + " + num2 + " = " + sum);
		
		sc.close();
	}

}

실수의 곱

// 2개 실수를 입력 받아서 곱한 결과를 출력하시오.
		
		double doubleNum1, doubleNum2, multi;
		
		System.out.print("실수 1 입력 > ");
		doubleNum1 = sc.nextDouble();
		System.out.print("실수 2 입력 > ");
		doubleNum2 = sc.nextDouble();
		
		multi = doubleNum1 * doubleNum2;
		System.out.println(doubleNum1 + " x " + doubleNum2 + " = " + multi);

메소드

  • 메소드 구조
[접근제한자] static [반환유형] [메소드명] (매개변수){}
public static void Main (String[] args){}
  • 입력 값이 없으면 매개변수를 넣지 않아도 됨.
  • ex. 출력 함수

메소드의 4가지 형태

메소드 오버로딩 [중복 정의] : 함수명이 같아도 됨.

1. 매개 변수 X, 반환형 X

public static void add() {
		Scanner sc = new Scanner(System.in);
		
		System.out.print("숫자 1 입력 > ");
		int num1 = sc.nextInt();
		System.out.print("숫자 2 입력 > ");
		int num2 = sc.nextInt();
		int sum = num1 + num2;
		
		System.out.println("두 수의 합 : "+sum);
	}
  • add();로 호출

2. 매개 변수 O, 반환형 X

public static void add1(int a, int b) {
		int sum1 = a + b;
		System.out.println(a + " + " + b + " = " + sum1);
	}
  • 호출은 매개 변수를 넣어서 add1(a, b)

3. 매개 변수 X, 반환형 O

public static int add1() {
		Scanner sc = new Scanner(System.in);

		System.out.print("숫자 1 입력 > ");
		int num1 = sc.nextInt();
		System.out.print("숫자 2 입력 > ");
		int num2 = sc.nextInt();
		int sum = num1 + num2;

		return sum;
	}
  • 호출 ▶ System.out.println(add1());

4. 매개 변수 O, 반환형 O

public static int add2(int a, int b) {
		int sum = a + b;
		return sum;
	}
  • 호출 ▶ System.out.println(add2(arg1, arg2));
  • 단, 코드를 위 형태들로 짜게 되면 오류를 야기할 수 있다.

예제 1.

두 정수를 입력 받아 비교한 후 더 큰 수 출력.

public class Method2 {
		public static int max(int a, int b) {
			int maxNum = a;
			if (b > a) {
				maxNum = b;
			}
	
			return maxNum;
		}
  • max 함수 부분
public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		System.out.print("정수 1 입력 > ");
		int a = sc.nextInt();
		System.out.print("정수 2 입력 > ");
		int b = sc.nextInt();

		int max = max(a, b);
		System.out.println("최대값 : " + max);
		
		sc.close();
	}
  • 메인 함수 부분

예제 2.

두 개의 정수와 연산 부호를 받아 사칙 연산 구현하기.

  • 함수 부분
  • switch-case 이용.
public static int cal(int a, int b, String c) {
			int res = 0;
			
			switch(c) {
				case "+":
					res = a + b;
					break;
				case "-":
					res = a - b;
					break;
				case "*":
					res = a * b;
					break;
				case "/":
					res = a / b;
					break;
			}
			
			return res;
		}
  • 메인 함수 부분
public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String c = new String();

		System.out.print("정수 1 입력 > ");
		int a = sc.nextInt();
		System.out.print("정수 2 입력 > ");
		int b = sc.nextInt();
		System.out.print("연산부호 입력 > ");
		c = sc.next();
		
		int result = cal(a, b, c);
		System.out.println(a +" " + c + " " + b + " = " + result);
		
		
		sc.close();
	}

나누기 0 예외 처리

  • 함수 부분
case "/":
			if (b == 0) {
				res = 0;
			} else {
				res = a / b;
			}
			break;
		}
  • 메인 부분
if (result == 0) {
			System.out.println("An error occured.");
		} else {
			System.out.println(a + " " + c + " " + b + " = " + result);
		}

이런 식으로 코드를 구성하면 0으로 나누는 상황 외에도 오류를 다룰 수 있음.

메소드 오버로딩

  • 메소드명이 같지만 매개변수가 다른 것.
  • 매개 변수의 자료형 또는 개수가 달라야 함.
// 블랙 커피
	public void coffee(int coffee) {
		System.out.println(coffee + "블랙 커피");
	}
	
	// 크림 커피
	public void coffee(int coffee, int cream) {
		System.out.println(coffee + "크림 커피");
		
	}
	
	// 믹스 커피
	public void coffee(int coffee, int cream, int s) {
		System.out.println(coffee + "블랙 커피");		
	}
  • 위와 같이 메소드를 선언할 때 static을 제외하면, 객체를 따로 만들지 X.
  • 모두 Overloading이라는 클래스에 소속되며, 일반적인 함수 호출 방법으로 호출 불가. (추후 학습)
  • 객체는 개개의 정보가 중요할 때 다루면 됨.