package movie.reservation.site;
import java.io.IOException;
public class Moviereserv {
public static void main(String[] args) throws IOException{
int choice = 0;
System.out.println("상영중인 영화 실시간 순위");
System.out.println("1. ----- ");
System.out.println("2. --- ");
System.out.println("3. -- ");
System.out.println("4. ------- ");
System.out.println("5. ----------");
System.out.println("6. 종료");
System.out.print("예매를 원하시는 영화의 숫자를 입력해주세요 : ");
boolean wLoop = true;
while (wLoop) {
choice = (int) System.in.read();
switch(choice) {
case '1' :
System.out.println("\n예매되었습니다.\n");
System.out.print("다른 영화를 더 원하시면 다른 숫자를 눌러주세요 : ");
break;
case '2' :
System.out.println("\n예매되었습니다.\n");
System.out.print("다른 영화를 더 원하시면 다른 숫자를 눌러주세요 : ");
break;
case '3' :
System.out.println("\n예매되었습니다.\n");
System.out.print("다른 영화를 더 원하시면 다른 숫자를 눌러주세요 : ");
break;
case '4' :
System.out.println("\n예매되었습니다.\n");
System.out.print("다른 영화를 더 원하시면 다른 숫자를 눌러주세요 : ");
break;
case '5' :
System.out.println("\n예매되었습니다.\n");
System.out.print("다른 영화를 더 원하시면 다른 숫자를 눌러주세요 : ");
break;
case '6' :
wLoop = false;
System.out.println("\n창을 종료합니다.\n");
break;
default :
System.out.println("숫자 입력이 잘못되었습니다. 다시 입력해주세요!");
}
if(wLoop == false) {
System.out.println("예매해주셔서 감사합니다!\n");
System.out.println("영화 그 이상의 감동! CVG!");
break;
} else {
wLoop = true;
}
}
}
}
이렇게 만들었는데 case 숫자 뭐를 입력하든 default에 있는 숫자 입력이 잘못되었다는 문장이 2번씩 출력되는데 무슨문제임?
그냥 while문에 switch넣으면 default를 못쓰는거임?
해당 댓글은 삭제되었습니다.
아 그럼 어떻게 올려야댐? 알려주면 다시 올릴게
어제는 코드없이 이런질문 하면 궁예냐고 해서 코드째로 올려본거였는데 미안
해당 댓글은 삭제되었습니다.
char로 다시 형변환 하고 돌려봐도 2번씩 출력돼 ㅠㅠ
해당 댓글은 삭제되었습니다.
메인에 throws된 IOexception 말하는거지??
ㅇㅎㄳㄳ
해당 댓글은 삭제되었습니다.
ㅇㅇ 그건 알고있는데 그럼 char형으로 다 형변환시켜놓을까?
해당 댓글은 삭제되었습니다.
choice = (char) System.in.read(); 이렇게 바꿔줘도 default에 문장이 2번씩 출력되네 ㅠ
해당 댓글은 삭제되었습니다.
바꿔줘서 돌려봤는데 그래도 2번씩 나와 ㅠ
해당 댓글은 삭제되었습니다.
(char)로 명시적 형변환 된거아닌ㄴ가?
I/O 관련 문제일 것같은데 default에다가 choice가 어떤 값인지 찍어봐 그리고 스위치는 안 쓰는게 나음
default에 choice 찍었더니 입력받은 정상적인값 1번 출력되고 빈 값이 2번 더 출력되는데?
바보임? 와일문이랑 스위치가 동일선상에있으니 디폴트로 빠지지
tab으로 한칸씩 밀면되는거야?
여기 댓글쓴애들 다 자바초보네 내말이 맞음
어떻게 해야되는건디 ㅠ
무한루프됨 그리고 증감식추자해서 재귀 빠져나가야함
니가말한거맞음
디폴트까지 탭하셈
tab 해도 똑같음 ㅅㅂㅋㅋ default를 입력 받았을때만 한번만 출력하고 루프를 돌아야지 내가 원하는건데 다른 case의 올바른 수를 입력받아도 자꾸 default가 2줄씩 더 뜨니까 좆같네
choice 출력으로 디버깅하셈
default에 choice 찍었더니 입력받은 정상적인값 1번 출력되고 빈 값이 2번 더 출력되서 총 3번출력됌 ㅠㅠ
출력어떻게 했는데
숫자 입력이 잘못되었습니다. 다시 입력해주세요! choice값8 숫자 입력이 잘못되었습니다. 다시 입력해주세요! choice값 숫자 입력이 잘못되었습니다. 다시 입력해주세요! choice값
뭘어케됨 0이지 ㅋㅋ
이렇게 뜨고 다시 숫자 다른거 누르면
다른 영화를 더 원하시면 다른 숫자를 눌러주세요 : 숫자 입력이 잘못되었습니다. 다시 입력해주세요! choice값 숫자 입력이 잘못되었습니다. 다시 입력해주세요! choice값
문자로 출력하지말고 hex로 출력해봐
1말고 49입력해보셈
hex출력은 어떻게 하는지 모르겠고 49입력하니까 9만나옴
문자로 출력하지말고 초이스 변수에 뭐가 들어가있는지 보고싶으니까 정수로 출력해보셈
디폴트에 넣지말고 입려받는코드 바로 아래에
choice는 int고 형변환은 char로하고 switch case도 char로하고 지금 뒤죽박죽이다. 고치고만 싶으면 코드 다시짜
원인이 궁금하면 찾아보고
댓글들 보면서 choice도 char로 바꿔서 지금 전부 char로 통일했음
다른 영화를 더 원하시면 다른 숫자를 눌러주세요 : 입력받은 값 = 4 숫자 입력이 잘못되었습니다. 다시 입력해주세요! 입력받은 값 = 9 숫자 입력이 잘못되었습니다. 다시 입력해주세요! 입력받은 값 = 숫자 입력이 잘못되었습니다. 다시 입력해주세요! 입력받은 값 =
+choice 출력으로 정수 옆에 나오게 한건데 아예 정수만 받아서 출력해야댐?
이걸 아직도고민중이네 대단하다. 글써줄테니까보셈
넹
정수로 출력했는데 4랑 9가 나왔어? 문자 ‘4’는 정수로 뭐야
그문제가아님
자바도 들여쓰기 신경쓰나? 파이썬만 그런줄 알았는데
아아 뭔말인지 이해댐
개행 치우셈
\n다 지우라는말임?
반복되는건 개행문자 처리하고 값 제대로 비교안되는건 검색해보니까 ‘1’을 주고싶으면 49를 주던데 이게 왜 4랑 9가 떨어져서 입력이 되는지 모르겠다
입력 데이터에 개행들어간게 다음 루프에서 입력으로 처리되는듯
디버깅 출력 어떻게한건지 모르겠네 49를 4랑9로 인식된다는건 각 자리수를 1바이트(char)로 취급한다는거고 그말은 정수로 출력 안됐다는건데,
너 바보임? 자바기초가 존나 없네
char는 한글자만 취급한다. 두글자부터는 문자열이야
while이랑 switch가 같은선상에 있어서 디폴트로 빠진다는 말같지도않은 소리하는놈이 할말은 아닌데