2015-04-01 56 views
0

長話短說,gameplayWord是從單詞列表中隨機確定的單詞,用於從(在本例中爲簡單文字文件)讀取的hang子手遊戲。 easyContentList是該文件中所有數據的ArrayList。該文件是2列,第一列 - 可以使用的詞,第二列 - 表示單詞使用次數的數字。 (在初始文件中爲0)我需要根據遊戲的每次迭代來跟蹤這個數字。 easyFileUpdateList是在類級別聲明的字符串ArrayList。 問題是這樣的基本不起作用:在輸出文件中跟蹤基於文本的hang子手遊戲

public void updateEasyFile(String gameplayWord, ArrayList<String> easyContentList) { 

    Integer used = 0; // represents used word count 
    String strUsed = ""; 

    for (int i = 0; i < easyContentList.size() - 1; i++) { 
     String oneLine; 
     oneLine = easyContentList.get(i); 
     tokenizer = new StringTokenizer(oneLine); 

     String firstToken = tokenizer.nextToken(); 

     if (firstToken.equals(gameplayWord)) { 
      used = Integer.parseInt(tokenizer.nextToken()); 
      used++; 
      strUsed = used.toString(); 
      easyFileUpdateList.add(gameplayWord + " " + strUsed + " " + "TODO"); 
     } 
     if (!firstToken.equals(tokenizer.nextToken())) // add the first token of every line except the first 
      easyFileUpdateList.add(oneLine);   
    } 

    try { 

     PrintWriter printWriter = new PrintWriter(new FileOutputStream(new File("hmeasy.txt"))); 

     for (String oneLine : easyFileUpdateList) { 
      printWriter.println(oneLine); 
     } 
     printWriter.close(); 
    } 
    catch (FileNotFoundException fnfe) { 
     fnfe.printStackTrace(); 
    } 
} 

更新

謝謝你,我會考慮散列集。讓我再澄清一點,我還沒有完全遵循。

正確的,該文件將像你說的,所以如果字是狗,貓,和霧的文件看起來像:

dog 0 
cat 0 
fog 0 

有零的第三列,這是什麼TODO是爲,但我稍後會擔心。

你是正確的問題,我是隻是添加一個新詞條,然後在第二列1。所以,如果霧是隨機連續挑3次,並執行這個方法,它會說

dog 0 
cat 0 
fog 1 
dog 0 
cat 0 
fog 1 
fog 1 
dog 0 
cat 0 
fog 1 
fog 1 
fog 1 

就是我要找的是: 第一輪:

dog 0 
cat 0 
fog 1 

第二輪:

dog 0 
cat 0 
fog 2 

等等

我每次都需要更新文件中的數目字我隨機選擇。

+0

基本上,它有什麼作用?可以玩遊戲嗎?當它是什麼時候它會改變文件嗎? – CandiedOrange 2015-04-01 04:47:02

回答

0

近,我可以告訴你,如果文件hmeasy.txt看起來像這樣:

firstGamePlayWord 0 
secondGamePlayWord 0 

如果第一項發揮它很快就會像這樣:

firstGamePlayWord 0 
secondGamePlayWord 0 
firstGamePlayWord 1 TODO 

其中,我懷疑,不是你想要的。

easyFileUpdateList.add(gameplayWord + " " + strUsed + " " + "TODO"); 

,因爲這是一個ArrayListadd()只是大頭針該行結尾:因爲你用這條線它這樣做。

我可以告訴你改用set()i你很努力地找到,但這會鼓勵壞的設計。你應該停止使用ArrayList。它不是爲查找而設計的。

相反,我鼓勵你看看使用LinkedHashSet<String, Integer>。不需要標記,查找速度快,並且所有內容都將按照添加的順序進行。

當試圖找到在java中正確的數據結構我看看這個: enter image description here

+0

對不起,我是新來這個網站我張貼在回答我的迴應,如果不知道我這樣做的權利.. – droftrah 2015-04-01 14:31:52

0

謝謝你,我會考慮散列集。讓我再澄清一點,我還沒有完全遵循。

正確的,該文件將像你說的,所以如果字是狗,貓,和霧的文件看起來像:

dog 0 
cat 0 
fog 0 

有零的第三列,這是什麼TODO是爲,但我稍後會擔心。

你是正確的問題,我是隻是添加一個新詞條,然後在第二列1。所以,如果霧是隨機連續挑3次,並執行這個方法,它會說

dog 0 
cat 0 
fog 1 
dog 0 
cat 0 
fog 1 
fog 1 
dog 0 
cat 0 
fog 1 
fog 1 
fog 1 

就是我要找的是: 第一輪:

dog 0 
cat 0 
fog 1 

第二輪:

dog 0 
cat 0 
fog 2 

等等

我每次都需要更新文件中的數目字我隨機選擇。

+0

那麼你被允許來回答自己的問題。但那是因爲你已經想出答案並想分享它。有了這個你應該做的是點擊你的問題上的編輯鏈接並添加更新。我爲你做了這個,只是爲了告訴你如何。不要害怕編輯你的問題,以清楚地說明問題。你現在可以刪除這個答案。 – CandiedOrange 2015-04-02 02:04:06