2013-11-27 134 views
1

文件字符串我有兩個文件:通過比較字符串

Grader.getFileInfo("data\\studentSubmissionA.txt"); 
Grader.teacherFiles("data\\TeacherListA.txt"); 

兩者都包含的數學問題的列表,但TeacherList是未解,以檢查StudentSubmission不是從原版本的。

studentSubmission發送到平地機類和方法目前看起來是這樣的:

public static void getFileInfo(String fileName) 
     throws FileNotFoundException { 

    Scanner in = new Scanner(new File(fileName)) 

    while (in.hasNext()) { 
    String fileContent = in.nextLine(); 
    } 

和TeacherFiles方法看起來像

public static void teacherFiles(String teacherFiles) 
     throws FileNotFoundException{ 

    Scanner in = new Scanner(new File(teacherFiles)); 

    while (in.hasNext()){ 
     String teacherContent = in.nextLine(); 

     String line = teacherContent.substring(0, teacherContent.indexOf('=')); 
    } 

我不知道如何獲得這些方法另一種方法是爲了比較它們,因爲它們來自一個文件,我必須在方法簽名中加入一些東西來傳遞它們,但它不起作用。

我試圖把它們放在一個方法中,但是那也是一個半身像。

我不知道該從哪裏出發。我不能使用try/catch或數組。

是否可以通過方法發送.substring(0,.indexof('='))?

line = teacherFiles(teacherContent.substring(0 , .indexof('=')));可以做到這一點嗎?

+0

這是實驗工作,我不能使用數組。如果可以的話,這將是一百萬倍更簡單,我不會問。 – CherryBomb95

+0

我該怎麼做呢? – CherryBomb95

+0

好的,謝謝。 – CherryBomb95

回答

0

用更一般的術語來思考。注意你的方法分別是getFileInfoteacherFiles,除了一些細微差別外都是一樣的。那麼我們爲什麼不考慮尋找合併兩個功能並處理它們之外的細微差別的最佳方式?

邏輯上你不能使用數組,因爲在初始化數組之前需要知道數組元素的數量,並且在讀取文件時數組已經被初始化。因此,爲這個任務使用一個數組或者是矯枉過正的(例如,你在內存中分配1000個元素,而只使用10個元素)或者不夠(如果你創建了一個10個元素的數組,但你需要1000)。所以,由於您事先不知道行數,所以您需要爲您的任務使用另一個數據結構。

因此創建以下方法:

public static AbstractList<String> readFile(String filePath) throws FileNotFoundException, IOException { 
    Scanner s = new Scanner(new File(filePath)); 
    AbstractList<String> list = new ArrayList<String>(); 
    while (s.hasNext()){ 
     list.add(s.next()); 
    } 
    s.close(); 
    return list; 

} 

然後使用方法讀取學生檔案,並閱讀老師文件。將結果存儲到兩個單獨的AbstractList<String>變量中,然後遍歷它們並根據需要進行比較。再次,從更一般的角度來思考。