코드 그라데이션

Day12 Quiz01. 계산기 만들기(2) 나름대로의 해석 본문

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
Comments