2016-06-03 9 views
-2

2 개의 파일을 읽고 인접 행렬에 저장하려고합니다. 스레드 "주요"java.lang.NumberFormatException의에서java.lang.NumberFormatException : 입력 문자열의 경우 : ""| 도로/도시에 대한 Dijkstra 알고리즘 실행

예외 : 그러나, 나는의 오류를 받고 있어요 입력 문자열 : ""

java.lang.NumberFormatException.forInputString에서 (알 수없는 소스)

java.lang.Integer.parseInt (알 소스)에 java.lang.Integer.parseInt

(알 소스) project3.Project3.storeData (Project3.java:36)에서

에서

012,351,(내 주요 방법)이다 project3.Project3.main (Project3.java:64) 에서
36 | int number = Integer.parseInt(tokens[0]); 

64 | storeData(); 

내 storeData 방법 : 나는 그림을 원하는

public static void storeData() throws IOException { 
    digraph = new Digraph(); 

    File file1 = new File("city.dat"); 
    Scanner cities = new Scanner(file1); 
    File file2 = new File("road.dat"); 
    Scanner roads = new Scanner(file2); 
    while(cities.hasNext()) { 
     String delims = "[ ]+"; 
     String[] tokens = cities.nextLine().split(delims); 
     if(tokens.length > 5){ 
      int number = Integer.parseInt(tokens[0]); 
      String code = tokens[1]; 
      String cityName = tokens[2] + " " + tokens[3]; 
      int pop = Integer.parseInt(tokens[4]); 
      int elev = Integer.parseInt(tokens[5]); 
      digraph.add(new City(number, code, cityName, pop, elev)); 
     } 
     else { 
      int number = Integer.parseInt(tokens[0]); 
      String code = tokens[1]; 
      String cityName = tokens[2]; 
      int pop = Integer.parseInt(tokens[3]); 
      int elev = Integer.parseInt(tokens[4]); 
      digraph.add(new City(number, code, cityName, pop, elev)); 
     } 
    } 
    while(roads.hasNext()) { 
     digraph.insertRoad(roads.nextInt() -1, roads.nextInt() -1, roads.nextInt()); 
    } 
    cities.close(); 
    roads.close(); 
} 

왜 이런 일이 일어나고 내 나머지 프로그램을 계속할지 모른다. 어떤 도움을 주시면 감사하겠습니다! 고맙습니다!

+0

빈'String '을'int '로 파싱하려고합니다. 가능하지 않습니다. – SomeJavaGuy

+0

@ Kevin-Esche 내가이 문제에 대해 어떻게 생각하니? 내가 읽고있는 파일은 city.dat (숫자, 2 글자, 인구, 표고)이고 road.dat는 (숫자, 숫자, 숫자)입니다. – zerrisk

+0

String [] tokens = cities.nextLine(). split (delims); 콘솔 (가정)에서이 행의 입력을 받고 있습니다.이 입력은 null 또는 비어 있습니까? 또는 토큰 [0]이 비어있는 구분자 "구분자"가 있습니까? –

답변

0

nextLine()을 사용하지 말고 next() 및 nextInt()를 시도하십시오.