2013-10-16 2 views
0

저는 Java에 익숙하지 않고 입력 한 내용을 뱉어내는 간단한 입력/출력 프로그램 인 첫 번째 "프로그램"을 만들었습니다.자바에서 엔드 라인 문자를 어떻게 플러시 할 수 있습니까?

import java.util.Scanner; 

class Input{ 
    public static void main(String args[]){ 
     int zip; 
     int a; 
     double e = 2.718281828459045; 
     String name; 

     Scanner in = new Scanner(System.in); 

     System.out.println("Enter your zip code: "); 
     zip = in.nextInt(); 

     System.out.println("Enter your name: "); 
     name = in.nextLine(); 

     System.out.println("Enter an integer: "); 
     a = in.nextInt(); 

     System.out.println(name+", "+"your zip code is "+zip+" and e*"+a+" is "+e*a); 

    } 
} 

그래서이 코드를 실행하면 우편 번호를 입력하고 다음에 정수 입력으로갑니다. 일단 입력을 누르면 입력 스트림이 최종 줄 문자를 삼키는 것으로 의심됩니다. 모든 빠른 수정 또는 그냥 자바 - 바보 야?

감사합니다. 추가 in.nextLine()를 추가

System.out.println("Enter your zip code: "); 
zip = in.nextInt(); 

System.out.println("Enter your name: "); 
name = in.nextLine(); 

사이에서

+1

귀하의 추측은 정확합니다. 추가적으로 nextLine이 필요합니다. –

답변

1

. 그래서

System.out.println("Enter your zip code: "); 
zip = in.nextInt(); 

in.nextLine(); // consume dangling eol characters 

System.out.println("Enter your name: "); 
name = in.nextLine(); 

방법 Scanner#nextInt()은 뒤에 오는 int, 아무것도하지를 만들기 위해 필요한 바이트를 읽습니다. 정수를 입력 한 후 엔터를 누르면 캐리지 리턴/줄 바꿈 문자가 매달리게됩니다. 제거하려면 Scanner#nextLine()이 필요합니다.

+0

나는이 솔루션의 큰 팬이 아니다. 왜냐하면 거기에는 항상 매달려있는 캐리지 리턴이 의존하기 때문이다 ... 어느 쪽이든 그것을 읽고 * 다음에는 빈 라인을 확인하는 것이 더 정결 한 것처럼 보인다. – j6m8

+0

@ j6m8 어느 방향으로 읽었습니까 _ 무엇을 의미합니까? –

+1

할당되지 않은'in.nextLine()'라인은 항상 매달려있는 EOL을 가진 입력에 의존합니다 ... 나는 그 가정을하는 것이 합리적이라고 생각합니다.하지만 그것을 확인하기 위해 * something *에 할당하는 것이 현명 할 수도 있습니다 참으로 비어 있는지 확인하십시오. – j6m8

관련 문제