2010-11-26 3 views
0

switch 문을 메뉴로 사용합니다. 사용자 입력을 읽으려고합니다. 현재 variable=in.next();을 사용하고 있으며이 방법이 효과적입니다. 그러나 그것은 단지 하나의 단어를 읽고 점에서 사용자가 더 입력해야 할 수도 있으므로 컴파일하려고하는 variable=in.nextLine();을 사용해 보았습니다. 그러나 프로그램을 실행할 때 메뉴에서 내 선택 항목을 선택하면 읽어 들이고 건너 뜁니다. 메뉴로 이동합니다.Java - nextLine(); switch 문 내에서

어떤 도움을 주시면 감사하겠습니다, 감사합니다 :)

답변

1

그냥 사용

name=in.nextLine(); 

String choice = in.nextLine(); 

이 생성자에서, 그리고 runApp의 상단에 있어야합니다.

그런 식으로 새 줄을 버퍼에 남겨 두지 않습니다 (예 : dp에 사용).

당신이 있어야합니다 귀하의 질문에

dp=in.nextLine(); 

을 설명한다.

+0

나는 여전히 오랫동안 프로그래밍하지 않았기 때문에 대답을 오해하지 않는 한 같은 문제가 발생합니다. –

+0

@Ben, 코드로 테스트했습니다. 당신이 포함하지 않은 메소드에 대한 호출을 주석 처리해야했습니다. 현재 코드를 게시 할 수 있습니까 (질문을 편집하고 서식을 지정하기 위해 101 버튼을 사용할 수 있습니까)? –

+0

제대로 작동하도록 편집기를 가져올 수 없다는 것을 이해할 수 있기를 바랍니다. 나는 dp = in.nextLine(); 을 볼 수 있듯이 을 넣었지만 그게 나에게 오류를 준다. –

1

당신은 사용자의 입력에서 개행 문자 \n를 제거하거나 스위치 문에 거기에 생각해야 하나. 당신이 꽵을 사용하기로 결정하기 때문에 꽤 많은

() 컴퓨터에 사용자 입력이

f\n 

그래서 그냥 문자열을 따라 비교처럼 보일 것입니다!

-1

스위치 선택기는 정수, short, char 또는 enum 일 수 있습니다. 문자열을 스위치 선택기로 사용할 수 없습니다.

정확하게 이해했다면 사용자가 입력 한 단어를 사용하여 흐름을 제어하고 싶습니다.

열거 단어 { 시작, 중지, 경고음, }

지금 사용자가 단어 경고음를 입력 : 당신이 단어의 사전 정의 된 목록이있는 경우 당신이 열거를 사용하는 것이 좋습니다 것입니다. 당신은 말할 수있다 :

Words command = Words.valueOf(); 
/// 
switch (command) { 
    case start: /* start something */ break; 
    case stop: /* stop something */ break; 
    case beep: /* beep!!! */ break; 
    default: throw new IllegalArgumentException("Unknown command " + command); 
} 
+0

vic의 답변에 대한 내 의견보기. 그것은 컴파일되지 않습니다. –

0

OK 나는 자바에 너무 부적당하고 내 질문을 심하게 넣었다고 생각한다.

사용자 입력에 걸리는 시간은 단 1 단어 뿐이므로 기본적으로 모든 것을 취하고 nextLine을 사용하면 읽기가 건너 뛰고 다시 선택 사항으로 돌아갑니다.

+0

보관 용 계정 파일은 어떻게 간단하게 링크 되었습니까? – javamonkey79

+0

탐색기, 드롭 박스의 파일을 마우스 오른쪽 버튼으로 클릭하고 공용 링크를 복사하십시오. 문제가 발생하면 도움을 얻을 수 있습니까? : P –

관련 문제