2015-01-22 4 views
0

저는 완전히 Java에 익숙하지 않아 왜 실행될 때 오류가 발생하는지 잘 모릅니다. 아무도 내게 그 문제가 무엇인지 설명 할 수 있습니까? 다른 일을 무작정 시도하면서 최선을 다했지만 아무 것도 얻지 못했고, 나는 그들이하는 일을 아는 사람에게서 더 많은 것을 배울 것입니다. 고맙습니다!Scanner.nextLine()이있는 NoSuchElementException

내 코드 :

import java.util.Scanner; 

// Get date input and display results 
// Parse using a delimiter 

public class InputOutput3 
{ 
    public static void main(String[] args) 
    { 
     // Declare variables 
     String dateIn, input; 
     int month, day, year; 
     Scanner scan, scann; 

     // Initialize variables 
     scan = new Scanner(System.in); 

     // Prompt and wait for input 
     System.out.print("Enter enter the date (mm/dd/yy) > "); 
     dateIn = scan.nextLine(); 
     scan.close(); 

     // Analyze value entered 
     scan = new Scanner(dateIn); 
     scan.useDelimiter("/"); 
     month = scan.nextInt(); 
     day = scan.nextInt(); 
     year = scan.nextInt(); 

     // Display results 
     System.out.println("The month is " + month); 
     System.out.println("The day is " + day); 
     System.out.println("The year is " + year); 

     //Get their name 
     scann = new Scanner(System.in); 
     System.out.print("Please enter your name: "); 
     input = scann.nextLine(); 
     System.out.print("Your name is " +input); 


     // Close resources 
     scan.close(); 
     scann.close(); 
    } 
} 

결과 : 라인 21에서

Please enter your name: 

Exception in thread "main" java.util.NoSuchElementException: No line found 
    at java.util.Scanner.nextLine(Unknown Source) 
    at InputOutput3.main(InputOutput3.java:38) 
+1

* 무작위로 다른 것을 시도해 보려고 최선을 다했습니다. –

답변

0

당신은 (System.in를 의미) 그와 관련된 모든 자원을 종료하는 System.in에서 읽고있는 Scanner을 닫습니다. Scanner을 닫지 않아야합니다.

+0

적어도 dateIn 변수에는 그 안에 무언가가 들어 있습니다. 동의하지 않습니까? –

+0

@Kick Buttowski 나는 당신의 질문을 이해하지 못해 죄송합니다; 너는 그것을 바꿔 줄 수 있니? – kirbyquerby

+0

나는 네 답을 더 좋아한다. 그러나 나는 단지 스캔이 닫히기 전에 말하기를 원한다. 변수 date는 입력 양식을 System.in 형식으로 받아 들일 것이다. –

-1

두 개의 스캐너를 사용할 필요가 없습니다. 파싱 ​​날짜는 better classes입니다. 당신이 날짜를 구문 분석이 스캐너 중 하나를 사용하려고하는 경우 그러나, 당신은 콘솔에서 읽을 열린 System.in를에 연결된 스캐너를 남겨 두어야하고, dateIn을 읽는 스캐너는 scann에 연결해야합니다.