2012-07-13 2 views
2
import java.util.Scanner; 

public class Hello { 

    public static void main(String args[]) { 
     Scanner in = new Scanner(System.in); 
     int a; 
     String s; 

     System.out.println("Enter int : "); 
     a = in.nextInt(); 
     System.out.println("Enter String : "); 

     s = in.nextLine(); 
     System.out.println("int : "+a+"\nString : "+s); 
    } 
} 

저는 완전히 Java의 초보자입니다. 나는 클래스 Hello을 만들었고 하나의 숫자와 하나의 문자열을 입력하고 싶지만 s = in.nextLine();이 줄은 무시됩니다. 어떻게 한 줄에 두 개의 값을 입력 할 수 있습니까? 대신 Scanner.nextInt() 이후 Scanner.nextLine() 사용

s = in.nextLine(); 

+0

요청하기 전에 먼저 몇 가지 조사를 수행 –

+4

@ user1348753 OP는 초보자이기 때문에 배우거나 떠나는 데 도움이됩니다. 자바를 배울 때 이러한 문제에 직면 한 것을 기억하십시오. –

+4

복제 됨 http://stackoverflow.com/questions/7056749/scanner-issue-when-using-nextline-after-nextint –

답변

1

in.nextLine(); 
s = in.nextLine(); 

nextInt() 호출 여전히 뒤에 줄 바꿈 잎을보십시오.

in.nextLine() 호출은 실제로 다음 행으로 이동합니다. 그런 다음 in.nextLine이 실제 결과를 얻습니다.

+3

이와 관련하여 설명이 있으십니까? – Thilo

+0

답변보다 댓글에 더 좋을 것입니다. –

+0

대답이 아닌 방법을 말해주십시오. – Brad

4

Scanner.nextInt()을 사용하면 새 줄 (또는 다른 구분 기호) 자체를 사용하지 않으므로 반환되는 다음 토큰은 일반적으로 빈 문자열입니다. 따라서 Scanner.nextLine()을 따라야합니다. 대신 a에 할당하는 결과를 폐기 할 수 있습니다

int a = in.nextInt(); 
in.nextLine(); 

그것은 내가 항상nextLine (또는 BufferedReader.readLine())를 사용하고 Integer.parseInt() 사용 후 구문 분석을하고 제안이 이유입니다. D

import java.util.Scanner; 

public class Hello { 
    public static void main(String args[]) { 
     Scanner in = new Scanner(System.in); 
     int a; 
     String s = null; 
     System.out.print("Enter int: "); 
     a = in.nextInt(); 

     while ((s = in.nextLine()).trim().isEmpty()) { 
      System.out.print("Enter String: "); 
     } 

     System.out.println("int : " + a + "\nString : " + s); 
    } 
} 
+0

간단히 말해서, 문제는 'nextInt' 호출은 int의 끝까지 입력에서 읽지 만 int 뒤의 * 개행 문자는 읽지 않는다는 것입니다. – Lion

0

이처럼보십시오.
0
import java.util.Scanner; 
public class Hello{ 
    public static void main(String args[]){ 
     Scanner in = new Scanner(System.in); 
     int a; 
     String s; 
     System.out.println("Enter int : "); 
     a = in.nextInt(); 
     System.out.println("Enter String : "); 
     s = in.next(); 
     System.out.println("int : "+a+"\nString : "+s); 
    } 
}