메서드를 이용해 메뉴를 만들고, 리턴타입을 추가해봤다.
메서드의 기본적인 역할을 이해하고,
그안에 세부적인 코드들의 역할도 한번씩 건들어보았다.
사실 계속 그냥 강의 보고 따라해보기만 하는걸로는 진행하기 어려운 시점이 되었다.
좀 답답해지는 와중에 선생님이 코드를 걍 외워버리는게 낫다고 해서 그냥 매일 매일 코드 써보기를 루틴으로 잡고 해보니 그제서야 조금 (아주 쬐금) 더 이해가 된다.
자 그럼 가본다.
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 |