2014-01-19 6 views
0

Java에서 File and Scanner를 사용하여 CSV 파일을 열려고하는데 스캐너를 사용하여 열 수 없습니다. 첨부 된 코드는 어떤 아이디어입니까? 관련 코드는 parseFile 기능의 코드가 시도/캐치 작동하지 않을 이유를 알아 내려고 노력하고, 아직 아무것도하지 않는스캐너에서 Java로 CSV 파일 열기

import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.IOException; 
import java.util.Scanner; 


    public class CIS350HW1 { 

     /** 
     * @param args 
     */ 
     public static void main(String[] args) { 
      boolean quit = false; 
      int year = 0; 
      while(quit == false){ 
       printMenu(); 
       Scanner sc = new Scanner(System.in); 
       String str = sc.next().toUpperCase(); 
       System.out.println(str); 
       if (str.equals("Q")) { 
        System.out.println("Good bye"); 
        quit = true; 
       } 
       else if (str.equals("3")) { 
        parseFile(args[0], Integer.parseInt(str), year); 
       } 
       else if (str.equals("2") || str.equals("1")) { 
        System.out.println("Please enter the year: "); //remember might not be println 
         try { 
         year = Integer.parseInt(sc.next()); 
        } catch(NumberFormatException e) { 
         System.out.print("Invalid formatted input. "); 
        } 
        if (year < 1920 || year > 2010){ 
         System.out.println("Not a valid year."); 
         System.out.println(); 
        } 
        parseFile(args[0], Integer.parseInt(str), year); 
       } 
       else { 
        System.out.println("That is not a valid selection."); 
       } 
      } 
     } 

     /** 
     * prints the menu options to the consul. 
     */ 
     public static void printMenu() { 
      System.out.println("Welcome to the Oscars database!"); 
      System.out.println(); 
      System.out.println("Please make your selection:"); 
      System.out.println("1: Search for best picture award winner by year"); 
      System.out.println("2: Search for best picture award nominees by year"); 
      System.out.println("3: Search for actor/actress nominations by name"); 
      System.out.println("Q: Quit"); 
     } 

     public static void parseFile(String args, int n, int year) { 
      File file = new File(args); 
      Scanner input = null; 
      try { 
       input = new Scanner(file); 
      } catch (FileNotFoundException e) { 
       System.out.println("Could not open the file for some reason."); 
      } 


      while(input.hasNext()) { 
       String nextLine = input.nextLine(); 
       String token[] = nextLine.split(","); 
       if (n == 1) { 
        String tempYear[] = token[0].split(" "); 
        if (Integer.parseInt(tempYear[0]) == year 
          && token[1].equals("Best Picture") 
          && token[3].equals("YES")) { 
         System.out.println(token[2]); 
        } 
       } 
      } 

      input.close(); 
     } 

    } 

주입니다. 감사합니다.

+0

'결코 작동하지 않음'이란 무엇입니까? – kmera

+0

"어떤 이유로 파일을 열 수 없습니다."라는 오류 메시지가 표시됩니다. 항상 인쇄하고 주 –

+0

에 예외 스레드가 발생하면 파일을 찾지 못합니다. 어떻게 파일 이름을 프로그램에 전달합니까? – kmera

답변

0

프로그램을 실행하는 데 명령 줄을 사용하는 경우 (java CIS350HW1 file.csv) 파일은 동일한 폴더에 있어야합니다.

그러나 IDE (Eclipse 또는 다른 프로그램)에서 프로그램을 실행하면 파일이 프로젝트의 클래스 경로에 있어야합니다.