[개발] - Java/Mega-Method
Day12 Quiz01. 계산기 만들기(2) 나름대로의 해석
완벽한 장면
2023. 3. 31. 00:02
소스코드
package Day12;
import java.util.Scanner;
public class Q1_1 {
static int add(int a, int b) {
return a + b;
}
static void minus(int a, int b) {
System.out.println("결과값 : "+(a-b)+" 입니다.");
}
static int mul() {
Scanner sc = new Scanner(System.in);
int[] array =input(sc);
return array[0] * array[1];
}
static void div() {
Scanner sc = new Scanner(System.in);
int[] array =input(sc);
System.out.printf("결과값 : %.1f 입니다.", (double)array[0]/(double)array[1]);
}
static int[] input(Scanner sc) {
int[] a = new int[2];
System.out.print("숫자1 입력 : ");
a[0] = sc.nextInt();
System.out.print("숫자2 입력 : ");
a[1] = sc.nextInt();
return a;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
//1. 입력
System.out.print("연산자 입력 : ");
String op = sc.next(); //위로 뺀다
if(op.equals("+")) {
int[] array=input(sc);
System.out.println("결과값 : "+(array[0]+array[1])+" 입니다.");
}
else if(op.equals("-")) {
int[] array=input(sc);
System.out.println("결과값 : "+(array[0]-array[1])+" 입니다.");
}
else if(op.equals("*")) {
System.out.println("결과값 : "+mul()+" 입니다.");
}
else if(op.equals("/")) {
div();
}
else {
System.out.println("잘못된 연산자 입니다.");
}
}
}
나름대로의 해석
(1) 연산자 입력
공통 부분이므로, 그냥 main 메소드에 둔다.
(2)
숫자 입력 메서드는 따로 뺌.
숫자 2개를 입력받을 것이므로, 배열로 받음.
그리고 매개변수o, 리턴값o 인 메소드로 구현을 해야하므로
스캐너 자체를 매개변수로 받고, a(배열)을 리턴값으로 반환한다.
나머지 원리는 앞선 소스코드 1과 비슷함
여기서 질문
(Scanner sc)는 클래스 그 자체를 매개변수로 받아온 건가요? 매개변수의 타입은 뭐라고 봐야하는 건가요?
return a는 지금 배열을 반환하는 건가요, 아니면 int 값을 반환하는 걸로 해석해야 하나요?
int[] array=input(sc); 이건 왜 이런 형태로 쓰는지 모르겠어요.
지금 더하기 빼기 연산은 input을 main에 두고,
곱하기, 나누기 연산은 input을 각각의 메서드에 두는 식으로 코드를 강사님이 구현했는데,
왜 그런 차이가 있는 걸까요?
제 추론은 파라미터 값의 유무일 것 같긴 한데, 제대로 된 이유가 궁금하네요.
728x90
반응형