2017-04-06 5 views
-1

私は大学のためにいくつかのコースを読み込まなければならないプロジェクトに取り組んでいます。各コースはコース名(例:「CSCI 150」、「CSCI 150L」)とセクション番号(「CSCI 150 1」、「CSCI 150L 1」)で構成されています。異なる変数タイプのテキストファイルからArrayListを取り込む

私はこれらのコースでのArrayListをロードしようとしていますが、毎回、私は後でそれらを表示しようと、私はここで入力不一致例外またはNosuchelement例外

は私のコードを使用してテキストファイルイムで次のようになります取得それを下にテストする。

CSCI 150 1 
CSCI 150 2 
CSCI 150L 1 
CSCI 140 1 
MATH 174 1 
MATH 132 2 
MATH 412L 1 
MATH 174 2 
BIOL 110 1 
BIOL 210 1 
CBAD 310L 1 
CBAD 110 1 
CBAD 210 2 
+0

私は、行全体( 'nextLine()')を読んで、それをスペースで分割することをお勧めします。このようにして、あなたのプログラムは予想されるフォーマットから逸脱した不完全なテキストファイルを考慮に入れることができます。 – domsson

+0

また、 'ArrayList'について説明しています。問題は' displayCourses() 'メソッドから来ていますが、' ArrayList'もそのメソッドも表示しません。 – domsson

+0

私はdisplayCourses()メソッドがうまく動作することを知っています。ただ、私のarraylistがファイルから読み込まれているかどうかをテストするために呼び出すだけです。問題は、同じ行に異なる変数の型があり、コースの中には150Lまたは140Lがあり、最後に文字列が入っているので、ファイルを適切に保存するということです。 – Strayfire

答えて

0

私はそれをコンパイルしていないが、いくつかのマイナーな構文エラーがあるかもしれませんが、これはトリックを行う必要があります。

public class Prog6 { 

/** 
* @param args 
* @throws FileNotFoundException 
*/ 
public static void main(String[] args) throws FileNotFoundException { 
    // TODO Auto-generated method stub 

    School university = new School(); 
    File aFile = new File("prog6.txt"); 
    Scanner fileReader = new Scanner(aFile); 
    String courseName; 
    int section; 
    int numberEnrolled; 

    while(fileReader.hasNextLine()){ 
     courseName = fileReader.next() + fileReader.next(); 
     section = fileReader.nextInt(); 
     Course aCourse = new Course(courseName, section); 
     university.addCourse(aCourse); 
    } 

    university.displayCourses(); 



} 

}

テキストファイルは、まさにこのようになります。

import java.util.regex.*; 
import java.util.Scanner; 

public class Prog6 { 

/** 
* @param args 
* @throws FileNotFoundException 
*/ 
    public static void main(String[] args) throws FileNotFoundException { 
     // TODO Auto-generated method stub 

     School university = new School(); 
     File aFile = new File("prog6.txt"); 
     Scanner fileReader = new Scanner(aFile); 
     String courseName; 
     int section = -1; 
     int numberEnrolled; 
     String currentLine = ""; 
     String regex = "(\\S+)(\\s)(\\S+)(\\s)(\\d)"; 
     Pattern regexPattern = Pattern.compile(regex); 
     Matcher matcher; 
     while(fileReader.hasNextLine()){ 
      courseName = ""; 
      currentLine = fileReader.nextLine(); 
      try { 
       matcher = regexPattern.match(currentLine); 
       matcher.find(); 
       courseName = matcher.group(1) + matcher.group(3); 
       section = Integer.parseInt(matcher.group(5)); 
      } catch (Exception e) { 
       System.out.println(e.getMessage()); 
      } 
      Course aCourse = new Course(courseName, section); 
      university.addCourse(aCourse); 
     } 
     university.displayCourses(); 
     fileReader.close(); 
    } 
} 
関連する問題