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이라는 클래스에 소속되며, 일반적인 함수 호출 방법으로 호출 불가. (추후 학습)
- 객체는 개개의 정보가 중요할 때 다루면 됨.