2011-10-30 5 views
12

현재 프로그램에서 한 방법은 사용자에게 제품 설명을 String 입력으로 입력하도록 요청합니다. 그러나 나중에이 정보를 인쇄하려고 시도하면 String의 첫 번째 단어 만 표시됩니다. 이것의 원인이 무엇일까요? 스캐너는 줄 대신 첫 단어 만 읽습니다.

void setDescription(Product aProduct) { 
    Scanner input = new Scanner(System.in); 
    System.out.print("Describe the product: "); 
    String productDescription = input.next(); 
    aProduct.description = productDescription; 
} 

그래서 사용자의 입력이 "오렌지 맛과 스파클링 소다"인 경우, System.out.print는 "반짝"을 얻을 것입니다 다음과 같이 나의 방법이다.

도움이 될 것입니다.

답변

27

nextLine()next() 교체 :

String productDescription = input.nextLine(); 
+5

나를 이길 때, 8 초 +1 –

+0

굉장합니다. 고마워요! 이것은 일했습니다 :) – Kristian

8

사용 input.nextLine(); 대신 input.next();

+0

감사. 이것은 매력처럼 작동했습니다. – Kristian

3

javadocs for Scanner 귀하의 질문에 대답

스캐너가 구분 패턴, 을 사용해 입력을 토큰에 분할

하는 기본적으로 공백과 일치합니다.

당신은()

Scanner s = new Scanner(); 
s.useDelimiter("\n"); 
+2

nextLine()이이 상황을 위해 특별히 작성되고 모두 깔끔하게 해결되면 왜 엉망이됩니까? –

1

input.next 같은 것을 수행하여 스캐너가 사용하는 기본 공백 패턴을 변경 입력 문자열의 첫 번째 whitsepace 구분 된 단어에 소요 있습니다. 그래서 그것은 설계에 의해 당신이 묘사 한 것을합니다. 시도하십시오 input.nextLine(). 구조에

+0

고마워요! 그것은 지금 일했다 :) – Kristian

1

Javadoc :

스캐너가 구분 패턴, 를 사용하여 토큰에 입력을 나누기 기본적으로는

nextLine은 아마 당신이 사용해야하는 방법이다 공백과 일치합니다.

관련 문제