2013-10-27 14 views
0

我被困在這個我正在上學的程序中。這裏是我的代碼:比較一個書面文件中的字符串

public static void experiencePointFileWriter() throws IOException{ 

    File writeFileResults = new File("User Highscore.txt"); 

    BufferedWriter bw; 

    bw = new BufferedWriter(new FileWriter(writeFileResults, true)); 

    bw.append(userName + ": " + experiencePoints); 
    bw.newLine(); 
    bw.flush(); 
    bw.close(); 

    FileReader fileReader = new FileReader(writeFileResults); 

    char[] a = new char[50]; 
    fileReader.read(a); // reads the content to the array 
    for (char c : a) 
     System.out.print(c); // prints the characters one by one 
    fileReader.close(); 

} 

我現在面臨的困境是如何能我有點新的得分與在writeFileResults分數由INT experiencePoints的數值?如果您想知道變量userName是由textfield.getText方法分配的,並且當您按下36個按鈕之一時會發生一個事件,該按鈕將啓動一個包含24個可能結果之一的math.Random語句。他們都爲體驗點添加了不同的整數。

+0

變量'oldScores'的類型是什麼? – Polaris878

+0

另外,我想你會想把所有分數讀入內存中,然後將它們全部寫回到文件中(作爲最簡單的方法)。 – Polaris878

回答

0

嗯,我不想做你的功課,這似乎確實介紹了,所以我想給你一些提示。

首先,有幾樣東西丟失:

  1. 我們沒有一些你給我們的變量,所以沒有與oldScores
  2. 相關的類型還有就是userName沒有參考或experiencePoints以外的方法調用

如果您可以添加此信息,它會使此過程更容易。我可以推斷出一些事情,但後來我可能是錯的,或者更糟的是,你沒有學到什麼,因爲我爲你做了你的任務。 ;)

編輯:

因此,基於額外的信息,你的數據文件被保存的用戶名和經驗值的「陣列」。因此,最好的方法(閱讀:最好的設計,不是最短的)將加載到自定義對象中,然後編寫一個比較函數(閱讀:實現抽象類Comparator)。

因此,在僞Java中,你必須:

  1. 聲明你的數據類型:

    private static class UserScore { 
        private final String name; 
        private final double experience; 
        // ... fill in the rest, it's just a data struct 
    } 
    
  2. 在你的讀者,當你閱讀的價值,分割每行獲得的值,並創建一個新的List<UserScore>對象,其中包含從文件中讀取的所有值(我會讓你把這個部分拿出來)
  3. 當你有你的列表後,你可以使用Collections#sort來吸着t爲列表是正確的順序,這裏會是這樣一個例子:

    // assuming we have our list, userList 
    Collections.sort(userList, new Comparator<UserScore>() { 
        public int compare(UserScore left, UserScore right) { 
         return (int)(left.getExperience() - right.getExperience()); // check the docs to see why this makes sense for the compare function 
        } 
    } 
    // userList is now sorted based on the experience points 
    
  4. 重新寫你的文件,您認爲合適的。你現在有一個排序列表。

+0

沒有冒犯,但我的任務有大約1200行代碼,這是其中的一個小方法。如果你用一種方法幫助我,那麼我的作業很難完成。 userName由textfield.getText方法分配,並且當您按下36個按鈕中的一個時,會發生一個事件,該按鈕將啓動一個math.Random語句,其中包含24個可能的結果之一。它們都將不同的整數數字添加到取決於體驗點。 –

+0

看起來應該是這裏有一組數據,但你只是說有一個值?如果是這樣的話,什麼是排序?只是尋求澄清。 – Nava2

+0

用戶以及用戶獲得的分數需要與其他用戶的姓名及其用戶分數進行比較。這種方法寫入文件,我需要一些方法來在書面文件中排序高分。例如,如果名爲「Steve」的用戶獲得了分數155,而分數爲130的用戶「Paul」是最後一個用戶,那麼我需要一些方法讓我的程序識別出Steve的分數高於Paul的分數並打印出來史蒂夫在書面文件中的保羅之上。順便說一句,感謝您回覆此主題。 –