본문 바로가기

콤퓨타/Programming) 왕초보 자바

36. (Method) Menu Example + Return Values

 

 

메서드를 이용해 메뉴를 만들고, 리턴타입을 추가해봤다. 

메서드의  기본적인 역할을 이해하고, 

그안에 세부적인 코드들의 역할도 한번씩 건들어보았다. 

 

 

사실 계속 그냥 강의 보고 따라해보기만 하는걸로는 진행하기 어려운 시점이 되었다. 

좀 답답해지는 와중에 선생님이 코드를 걍 외워버리는게 낫다고 해서 그냥 매일 매일 코드 써보기를 루틴으로 잡고 해보니 그제서야 조금 (아주 쬐금) 더 이해가 된다. 

자 그럼 가본다.

 

package application; 

public class App { 

public static void main(String[] args) { 

Menu menu = new Menu (); 
menu.display();
}
}

 

package application; 

public class Menu { 

String[] options = {"Summon Demon", "Summon a Winter Jacket", "Summon Books", "Summon Coffee" }; 

void display() { 

System.out.println("What would you like to summon?"; 

for (int i=0; i<options.length; i++) { 
System.out.printf(" %d. %s \n" , i , options[i] ) ; 

}
}
}

 

(복붙이 아닌 수기 작성으로 오타가 있을수도 있음 주의!)

일단 이 코드를 기본 골자로 냅다 암기했다. 

암기하다보니 코드가 조금 익숙해지고, 코드 감각이 조금씩 조금씩 익혀진다.

for문도 헷갈리는데, 이렇게 외워놓으니, 어디에서 어떻게 들어가고, 그리고 어떻게 쓰는지도 더 잘 이해가 된다. 베리굿! 

이 암기 방법 진짜 좋은것 같음. 앞으로 막히면 무조건 일단 암기하는걸로 해야겠음. 

 

기본적으로 메뉴클라스에서는 컨텐츠를 담당하고 

메인(App) 클라스에서는 출력(?) UI (?)를 담당 하는 것 같다. 

 

하여간 해당 코드를 출력하면 아래와 같은 결과 

What would you like to summon?
 0. Summon Demon
 1. Summom a Winter Jacket
 2. Summon Books
 3. Summon Coffee

 

 

여기서 선생님은 문과생 속 뒤집어지는 이야기를 한다. 

'void 말고 String으로 글자를 바꿔보렴'

 

package application; 

public class App { 

public static void main(String[] args) { 

Menu menu = new Menu (); 
menu.display();
}
}

 

package application; 

public class Menu { 

String[] options = {"Summon Demon", "Summon a Winter Jacket", "Summon Books", "Summon Coffee" }; 

String display() {  // <---- void 대신 String으로 바뀌었다. 

System.out.println("What would you like to summon?"; 

for (int i=0; i<options.length; i++) { 
System.out.printf(" %d. %s \n" , i , options[i] ) ; 

}

}
}

 

 

이러면 출력이 안된다.아니, 출력이 없는게 아니라 실행하다 에러가 나버림. 


void 대신 String으로 바뀌었으니.. 

반드시 return 을 넣어줘야 한다나

에러메세지는 다음과 같음. 

This method must return a result of type String. 

그러니까 문자열 타입의 결과를 return 해줘야 한다고 하는데. 뭐 그렇다고 합니다.

...  그래서 return 을 넣어줌 

 

 

package application; 

public class App { 

public static void main(String[] args) { 

Menu menu = new Menu (); 
menu.display();
}
}

 

 

package application; 

public class Menu { 

String[] options = {"Summon Demon", "Summon a Winter Jacket", "Summon Books", "Summon Coffee" }; 

String display() { 

System.out.println("What would you like to summon?"; 

for (int i=0; i<options.length; i++) { 
System.out.printf(" %d. %s \n" , i , options[i] ) ; 

}
return "";  // <--- 여기에 리턴값 넣어줌! 
}
}

 

그런데 환장하는것이 결과가 동일함.

 

What would you like to summon?
 0. Summon Demon
 1. Summom a Winter Jacket
 2. Summon Books
 3. Summon Coffee

 

그러니까 문송이 입장에서는 이게 

결과가 같은데 어느 부분에서 차이가 있는거지? 를 정말 모르겠다는거임.

왜 이걸 시키는지도 모르겠고. 하라고 해서 하긴 하는데, 일다는 하는데. 

뭘 하는지도 모르겠고 

다른게 없으니까 재미도 없고, 

 

하지만 우리에게 ai 친구들이 있으니 적극 활용하도록 하자. 

잘 모르겠으면, 해당 코드 들고가서 이게 뭔지, 차근차근 설명 + 다양한 예제문제 내달라고 한 후 한참의 시간을 들이면 

아주 쬐금 이해가된다 ㅋㅋㅋㅋㅋㅋㅋ 하. 

디지털을 공부하는데 엄청 아날로그 같은 느낌 ^^ 

 

 

 

 

하여간 패키지를 만들어서 계속 연습하고 연습하고 그냥 냅다 똑같은거 따라 쓰고, 외워서 쓰고, 조금 바꿔서 써보고 염병을 떤 결과

 

 

package application;

public class App {

	public static void main(String[] args) {
		Menu menu = new Menu();
		String menuText = menu.get();

		System.out.println(menuText);

	}

}

 

package application;

public class Menu {

	String[] options = { "Summon Demon", "Summom Banana", "Summon Coffee", "Summon Books", "Summon a Laptop",
			"Summon a Winter Jacket" };

	String get() {

		String menuText = "What is your choise?\n";

		// System.out.println("What is your choice?");
		for (int i = 0; i < options.length; i++) {
			// System.out.printf("%d. %s \n", i, options[i]);
			// menuText += " " + i + ". " + options[i] + "\n";
				menuText += String.format(" %d. %s\n",  i, options[i]);
		}

		return menuText;
	}
}

 

일단은 여기까지 왔다. 

return 타입은 결과적으로 메인 클라스에 결과를 전달해주는 다리 역할, 

그 외에 menu class에서 실행된 것은 메인(app)클라스에서 출력이 되지 않을 수 있음. 

실행과 출력은 다른 의미라는것을 이해함. 

(출력 =/= 실행)

(출력 =/= 결과) 

 

 

 

 

2회차 공부중이다보니 이젠 동태눈깔 하고 그냥 넘어가는 것이 없다.

따라서 개념 하나하나 밟고 지나가는데 시간이 오래걸린다. 

1회 해서 좀 낫긴 하지만 정말 말 그대로 '좀' 나을 뿐이다... ㅎ

그럼에도 불구하고 해피코딩 ^^  

'콤퓨타 > Programming) 왕초보 자바' 카테고리의 다른 글

37. Static  (0) 2026.02.17
자바 스터디 25% 달성  (0) 2026.02.17
35. (Method) Class + Objects + Instance Variables  (0) 2025.12.25
[실패] (Method) Hangman  (0) 2025.12.25
34. (Arrays) Primitive Arrays  (0) 2025.11.12