코드 그라데이션

Day12 Quiz 03 랜덤수 채우기 보충 학습 본문

Java/Mega

Day12 Quiz 03 랜덤수 채우기 보충 학습

완벽한 장면 2023. 4. 2. 01:51

소스코드

public class Q3 {

	// 주고 안받고
	static int makeRandom() {
		Random r = new Random();
		return r.nextInt(26);
	}
	// 주고 받고
	static int intSum(int r) {
		return 65 + r;
	}
	
	// 주고 받고
	static char makeChar(int result) {
		return (char)result;
	}
	
	// 안주고 안받고
	static void run() {
		String result = "";
		for(int i = 0;i<10;i++) {
			result += makeString(makeChar(intSum(makeRandom())));
		}
		printString(result);
	}
	
	static String makeString(char ch) {
		return ch + "";
	}
	
	static void printString(String str) {
		System.out.println(str);
	}
	
	public static void main(String[] args) {

		run();
	}

}

 

팁 하나

함수가 여러 개 중첩되어 있을 때는

가장 안쪽에 있는 것부터 하나씩 밖으로 빼서 봐라

 

인텔리제이 단축키 : ctrl + Alt + v

 

이 복잡한 메서드가

static void run() {
		String result = "";
		for(int i = 0;i<10;i++) {
			result += makeString(makeChar(intSum(makeRandom())));
		}
		printString(result);
	}

 

이렇게 분리 가능

  static void run() {
    String result = "";
    for (int i = 0; i < 10; i++) {
      int random = makeRandom();
      int sumofInt = intSum(random);
      char intAsChar = makeChar(sumofInt);
      String stringResult = makeString(intAsChar);
      result += stringResult;
    }
    printString(result);
  }

-----------

 

1.

메소드 intsum(int r)에서

여기서 int r 파라미터는 어디서 받아오는 값인가요?

나머지 의문점도 똑같음

 

지금 보면 makeRandom()의 결과값은

r.nextInt(26);이다.

run(...)에서도 보면

intSum(makeRandom()) 인데,

intSum의 파라미터는 makeRandom()의 결과값으로 해석할 수 있는 거였지

 

그렇다면, 파라미터 선언된 int r은 makeRandom의 결과값.

r은 그냥 우리가 임의로 선언하는 변수명과 똑같다.(큰 의미 x)

 

그렇다고 헷갈리면 안 되는 게

위의

Random  r = new Random(); 의 r은 아니다!

 

함수에서의 모든 변수들은 모두 독립적이기 때문

 

실제로는 intSum()의 파라미터 int r은

makeRandom()의 return값인 r.nextInt(26); 과 동일하다.

 

지금은 따로 변수를 선언해서 결과값을 저장하고, 그 변수명을 리턴하지 않고 바로 결과값을 리턴해서 그렇지.

정석처럼 변수를 따로 선언해줬다면 r 자리에 그 변수명이 대신 사용되었을 거라는 말이다.

 

예를 들면

	// 주고 안받고
	static int makeRandom() {
		Random r = new Random();
        int result =  r.nextInt(26)
		return rdresult;
	}
	// 주고 받고
	static int intSum(int rdresult) {
		return 65 + r;
	}

 

이렇게 말이다!!!

 

 

728x90
Comments