2017-11-05 5 views
1

현재 데이터 구조 클래스를 가져오고 다음 프로그램에서 대기열을 사용합니다.while 루프를 사용하여 clock while 루프를 사용하여 파일을 읽으십시오.

우리는이 하나의 입력 파일을 주어진 :

10 324 Boots 32.33 
11 365 Gloves 33.33 
12 384 Sweater 36.33 
13 414 Blouse 35.33 

나는 (시간 단위) 최초의 INT를 읽고 실행 계속 내 시계에 대한 참조로 것을 사용 해요 배경.

Scanner infp = new Scanner(new File(FILE)); 
while (busy) { 
    clock = 0; 
    clock += clockCount++; 

    while (infp.hasNext()) { 
     timeEntered = infp.nextInt(); 
     infp.nextLine(); 

     System.out.println(timeEntered); 
     busy = true; 

     if (timeEntered == clock) { 
      itemNum = infp.nextInt(); 
      type = infp.nextLine(); 
      itemPrice = infp.nextDouble(); 
     } 
    } 
} 

문제는 내가 그것을 실행할 때 나는 'InputMismatchException'오류입니다 :

나는이 라인을 따라 뭔가를했다. 나는 당신이 String 앞에 캐리지를 건너 뛸 필요가 있다는 사실을 알고 있습니다. 그것은 내가하고있는 것으로 믿는 것입니다.

나는 여기에서 어디로 갈지 모른다.

+0

귀하의 실수는 유형에있다 = infp.nextLine(). 전체 행을 읽습니다. 당신은 라인을 읽고 라인을 읽고 String split 메소드를 사용해야한다. –

답변

0

그래서 주어진이 열 : 각 라인에 대한

10 324 Boots 32.33 
11 365 Gloves 33.33 
12 384 Sweater 36.33 
13 414 Blouse 35.33 

, 당신은 timeEntered에 첫 번째 열을 참조하십시오. 그리고 나서 infp.nextLine()을 작성하면 그것이 실수입니다. nextLine에 전화하면 스캐너는 끝날 때까지 현재 줄에서 읽지 않은 모든 것을 읽습니다. 즉, 다른 열 값을 읽을 수 없습니다. 하지만 당신은 그것들이 필요합니다. 따라서 한 행의 값을 계속 처리하려면 nextLine으로 전화하지 마십시오. 후에 전화 해.

typeitemPrice을 읽었을 때 동일한 문제가 다시 발생합니다.

이 함께 while (infp.hasNext()) 교체 :

while (infp.hasNextLine()) { 
    int timeEntered = infp.nextInt(); 

    System.out.println(timeEntered); 
    busy = true; 

    if (timeEntered == clock) { 
     itemNum = infp.nextInt(); 
     type = infp.next(); 
     itemPrice = infp.nextDouble(); 
    } 
    infp.nextLine(); 
} 
+0

작품, 고마워요 !!! – Kraw24

관련 문제