코드 그라데이션

Day13 Quiz02 짝수 홀수 판별 퀴즈 의문점 추가해결 본문

Java/Mega

Day13 Quiz02 짝수 홀수 판별 퀴즈 의문점 추가해결

완벽한 장면 2023. 4. 2. 02:30

소스코드

public class Q2 {
	
	static String inputString() {
		Scanner sc = new Scanner(System.in);
		System.out.print("문자열 입력하세요 : ");
		return sc.next();
	}
	static int inputNum() {
		Scanner sc = new Scanner(System.in);
		System.out.print("1. 짝수 2 홀수 : ");
		return sc.nextInt(); 
	}
	
	static void printHJ(int num,String str) {
		for(int i = num-1;i<str.length();i+=2) {
			System.out.print(str.charAt(i));
		}
	}
	
	static void run(String str, int num) {
		if(num == 1 || num == 2) {
			printHJ(num, str);
		}
		else {
			System.out.println("잘못된 입력입니다.");
		}
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		run(inputString(),inputNum());
	}

}

 

질문

String str, int num은 변수로 따로 선언해서 받은 적이 없어 보이는데, 

어떻게 파라미터로 바로 넘어올 수가 있나 요?

 

일단,

프로그램의 시작점은 main

main에서 하는 일은 지금 run()을 호출해서 실행하고 있다.

그래서 run으로 올라가 봤더니 run은 str과 num을 매개변수로 받고 있다.

다시 main에서 run이 호출된 부분을 봤더니, str과 num이 들어갈 자리에

쌩뚱맞게(?)

inputString() 과 inputNum() 이 들어가 있다...(메서드가 들어가 있다.)

 

그런데 이것의 의미가 무엇이냐면,

메서드 자체가 들어간다는게 아니라...

 

일단 

run(inputString(),inputNum()); 이 어떻게 동작하냐면,

먼저 이 메서드들을 호출한다.

그 결과가 메서드 부분을 채우는 것이다.

즉, 메서드를 호출하는 것처럼 보이지만, 결과"값"이 들어간 것과 똑같음.

 

함수호출의 의미는

함수의 결과와 똑같다!

 

그럼 여기서도 inputString()의 결과와 inputNum()의 결과가 파라미터로 들어간 것임.

실행순서는 왼쪽에서부터 오른쪽으로~!

 

안에 들어가 있는 게 많아지면,

제일 안쪽에 있는 것부터 함수로 빼봐라.
그럼 코드해석이 훨씬 직관적으로 될 것이니까.

 

728x90
Comments