배운내용:
.isEmpty() 문자열 메서드 하나 추가
continue; break;의 반대인듯
else if (answer.isEmpty()) {
continue;
드디어 반복절 조건절 끝이 보인다.
여태 배웠던 내용을 섞어서 연습문제로 내주셨는데 내용은 다음과 같다.

일단 문제는 뭐냐면 생각이가 안난다.
하.
그냥 코드 쌩으로 받아 적을때나 좋았지. 막상 하려니까 왜 하나도 모르겠는것인가?
생각나는대로 꾸역꾸역 그냥 아무렇게나 적어본다.
String answer; 선언은 여기서 하는게 맞는지
answer = scanner.nextLine(); 은 이게 왜 이렇게 생각이 안나는지 또 앞에 exercise 가서 흘끗 보고 왔는데, 이게 여기 들어가는지 아니면 중괄호 안에 들어가는지도 확실하게 모르겟고 일단 생각나는거 냅다 다 적어버림...ㅠㅠㅠ
import java.util.Scanner;
public class Practice_01 {
public static void main(String[] args) {
System.out.println("Enter a command >");
Scanner scanner = new Scanner(System.in);
String answer;
answer = scanner.nextLine();
do {
System.out.println("Enter a command! > ");
if (answer.equalsIgnoreCase("start")) {
System.out.println("MAchine starting .... ");
} else if (answer.equalsIgnoreCase("stop")) {
System.out.println("Maching stopping .... ");
} else if (answer.equals("quit")) {
System.out.println("Exiting...");
}
scanner.close();
}
}
}
그리고 일단 커멘드 입력창은 반복이 되어야 하니까 do-while 써야겠다라고만 생각하고 냅다 do를 적어놨는데
콘솔창에서 while 내놓으라고 시위 ㅋㅋㅋㅋㅋ

챗지피티 소환.
import java.util.Scanner; public class Practice_02 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (true) { System.out.println("Enter a command > "); String answer = scanner.nextLine(); if (answer.equalsIgnoreCase("start")) { System.out.println("Machine Starting..."); } else if (answer.equalsIgnoreCase("stop")) { System.out.println("Maching stopping..."); } else if (answer.equals("quit")) { System.out.println("Exiting..."); break; } else if (answer.isEmpty()) { continue; } else { System.out.println("unknown command!"); } } scanner.close(); } }
그리고 갓벽한 코드; ㅎㅎ

일단 코드 따라 적고 마무리.
선생님의 모범답안
import java.util.Scanner;
public class Answer {
public static void main(String[] args) {
final String START = "start";
final String STOP = "stop";
final String QUIT = "quit";
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.print("Enter a Command > ");
String input = scanner.nextLine();
if (input.length() != 0) {
if (input.equalsIgnoreCase(START)) {
System.out.println("MAching starting...");
} else if (input.equalsIgnoreCase(STOP)) {
System.out.println("Maching stopping...");
} else if (input.equalsIgnoreCase(QUIT)) {
break;
} else {
System.out.println("Unrecognized Command.");
}
}
}
scanner.close();
}
}
각 문자열을 fianl 처리 해서 매번 문자열 적을때 "" 요거 필요 없음.
String.length() !=0 0이 아닐 시 이후부터 조건이 진행되도록 유도
근데 선생님이 여기서 while 말고 do -while로 바꾸고 boolean 넣어서 falg 로 작성해보라고 물어보심.
하. 나는 그거 할 마음의 여유가 있지 않아...
마음의 여유 없는 이유 = 할 줄 몰라서... ㅠㅠ
그래도 일단 시도 ㄱㄱ
그러니까, 결국 flag 실행이 됐냐 안됐냐니까
뭘 true/false로 넣냐면
여기서는 분기점이 나뉘는게 프로그램 종료 아니면 계속 하는거니까
boolean (ticket) = false;
false 인경우에는 종료 없음
true 인경우에는 프로그램 종료되도록?
라고 생각해고 내가 생각나는 코드 아무거나 때려박기 신공.... ^^
import java.util.Scanner;
public class Answer02 {
public static void main(String[] args) {
final String START = "start";
final String STOP = "stop";
final String QUIT = "quit";
Scanner scanner = new Scanner(System.in);
boolean ticket = false;
do {
System.out.print("Enter a Command > ");
String input = scanner.nextLine();
if (input.length() != 0) {
if (input.equalsIgnoreCase(START)) {
System.out.println("MAching starting...");
ticket = false;
} else if (input.equalsIgnoreCase(STOP)) {
System.out.println("Maching stopping...");
ticket = false;
} else if (input.equalsIgnoreCase(QUIT)) {
ticket = true;
break;
} else {
System.out.println("Unrecognized Command.");
}
}
} while (ticket = ture) {
System.out.println(프로그램이 성공적으로 종료되었습니다.);
}
scanner.close();
}
}
은 wouldn't work 이라는것을 나도 알고 있었지. 그래서 선생님 답지를 보니.
import java.util.Scanner;
public class Answer02 {
public static void main(String[] args) {
final String START = "start";
final String STOP = "stop";
final String QUIT = "quit";
Scanner scanner = new Scanner(System.in);
boolean running = true;
do {
System.out.print("Enter a Command > ");
String input = scanner.nextLine();
if (input.length() != 0) {
if (input.equalsIgnoreCase(START)) {
System.out.println("MAching starting...");
} else if (input.equalsIgnoreCase(STOP)) {
System.out.println("Maching stopping...");
} else if (input.equalsIgnoreCase(QUIT)) {
running = false;
break;
} else {
System.out.println("Unrecognized Command.");
}
}
}
while (running);
scanner.close();
}
}
플래그값 runnning을 true로 먼저 주고,
QUIT의 경우에만 runnnig = false로 넣어준다.
혹은, 챗지피티가 언급한 continuel; 도 쌤이 알려줌
continue 의 핵심은
현재 반복(loop)에서 남아 있는 코드를 전부 건너뛰고, 곧바로 다음 반복으로 진행
즉, 같은 루프 안에서 뒤에 오는 if-else들은 전혀 실행되지 않음
import java.util.Scanner;
public class Answer02 {
public static void main(String[] args) {
final String START = "start";
final String STOP = "stop";
final String QUIT = "quit";
Scanner scanner = new Scanner(System.in);
boolean running = true;
do {
System.out.print("Enter a Command > ");
String input = scanner.nextLine();
if (input.length() == 0) {
continue;
}
if (input.equalsIgnoreCase(START)) {
System.out.println("MAching starting...");
} else if (input.equalsIgnoreCase(STOP)) {
System.out.println("Maching stopping...");
} else if (input.equalsIgnoreCase(QUIT)) {
running = false;
break;
} else {
System.out.println("Unrecognized Command.");
}
}
while (running);
scanner.close();
}
}
후.
이게 하나하나 배울땐 뭐... 그나마 이해가 되는데 , 이걸 합쳐서 구조적으로 다뤄야 하는 건 .
좀 만히 어렵다. 구조적 생각하기 준비가 안되어있을수록 더 어려운 것 같다.
프로그래밍 공부하는거.. 뭐 개발자 될 거라고 생각하지는 않았지만.
생각보다 더 길게 봐얄지도 모르겠다.
흑흑
해피코딩
'콤퓨타 > Programming) 왕초보 자바' 카테고리의 다른 글
| 32. (Arrays) Iterating Over Arrays (3) | 2025.08.20 |
|---|---|
| 31. (Loops and Conditions) Stream Loops (0) | 2025.08.20 |
| 29. (Loops and Conditions) String Methods (0) | 2025.08.19 |
| 28. (Loops and Conditions) Flags (4) | 2025.08.19 |
| 27. (Loops and Conditions) Checking Password with Do-While (feat. 챗지피티 활용 위기관리) (6) | 2025.08.17 |