2015-04-01 3 views
0

Короче говоря, gameplayWord - это слово, которое было определено случайным образом из списка слов для игры в палач, считанный из (в данном случае файла простых слов). easyContentList - это ArrayList всех данных в этом файле. Файл имеет 2 столбца, первый col - слова, которые можно использовать, 2 - число, представляющее, сколько раз слово использовалось. (0 в исходном файле) Мне нужно отслеживать это число на основе каждой итерации игры. easyFileUpdateList - это String ArrayList, объявленный на уровне класса. Проблема заключается в основном не работает:отслеживание текста на основе игры палача в выходном файле

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(); 
    } 
} 

Update

Спасибо, я буду смотреть в хэш-наборы. Позвольте мне пояснить немного больше, я все еще не полностью слежу.

Правильно, файл будет, как вы сказали, так что если слова собака, кошка, и туман файл будет выглядеть следующим образом:

dog 0 
cat 0 
fog 0 

Существует 3-й столбец из нулей, которая является то, что TODO для, но я буду беспокоиться об этом позже.

Вы правы, что у меня есть проблема: просто добавьте новую запись со словом, а затем 1 во 2-й столбец. Так что, если туман случайно выбрал 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 

и т.д ...

мне нужно обновить номер в файле каждый раз, когда слово я s случайным образом выбран.

+0

В принципе, что он делает? Можно ли сыграть в игру? Изменяет ли файл вообще, когда он есть? – CandiedOrange

ответ

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>. Не нужно tokenize, поиск будет быстрым, и все будет в том же порядке, в каком он был добавлен.

При попытке найти правильную структуру данных в Java я смотрю на это: enter image description here

+0

Извините, что я новичок в этом сайте. Я ответила на это в ответ, не уверенный, что я сделал это правильно. – droftrah

0

Спасибо, я буду смотреть в хэш-наборы. Позвольте мне пояснить немного больше, я все еще не полностью слежу.

Правильно, файл будет, как вы сказали, так что если слова собака, кошка, и туман файл будет выглядеть следующим образом:

dog 0 
cat 0 
fog 0 

Существует 3-й столбец из нулей, которая является то, что TODO для, но я буду беспокоиться об этом позже.

Вы правы, что у меня есть проблема: просто добавьте новую запись со словом, а затем 1 во 2-й столбец. Так что, если туман случайно выбрал 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 

и т.д ...

мне нужно обновить номер в файле каждый раз, когда слово я s случайным образом выбран.

+0

Ну, вам разрешено ответить на ваш собственный вопрос. Но это, когда вы выяснили ответ и хотите поделиться им. С этим вам следует нажать ссылку редактирования по вашему вопросу и добавить обновление. Я сделал это для вас, чтобы показать вам, как это сделать. Не бойтесь очень сильно редактировать свои вопросы, чтобы дать им понять. Вы можете удалить этот ответ сейчас. – CandiedOrange

Смежные вопросы