有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在输出文件中跟踪基于文本的刽子手游戏

长话短说,gameplayWord是从hangman游戏的单词列表中随机确定的单词(本例中为easy words文件)。easyContentList是该文件中所有数据的ArrayList。文件有两列,第一列是可以使用的单词,第二列是表示单词使用次数的数字。(初始文件中的0)我需要根据游戏的每次迭代跟踪这个数字。 easyFileUpdateList是在类级别声明的字符串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();
    }
}

更新

谢谢,我会研究散列集。让我再澄清一点,我仍然没有完全理解

正确,文件将如您所说,因此,如果单词为dog、cat和fog,文件将如下所示:

dog    0
cat    0
fog    0

第三列是零,这就是TODO的作用,但我稍后会担心这个问题

你是对的,我遇到的问题是,只需在第二列中添加一个带有单词的新条目,然后添加一个1。所以,如果连续三次随机选取雾,并执行此方法,则会显示

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

等等

每次随机选择单词时,我都需要更新文件中的数字


共 (2) 个答案

  1. # 1 楼答案

    谢谢,我会研究散列集。让我再澄清一点,我仍然没有完全理解

    正确,文件将如您所说,因此,如果单词为dog、cat和fog,文件将如下所示:

    dog    0
    cat    0
    fog    0
    

    第三列是零,这就是TODO的作用,但我稍后会担心这个问题

    你是对的,我遇到的问题是,只需在第二列中添加一个带有单词的新条目,然后添加一个1。所以,如果连续三次随机选取雾,并执行此方法,则会显示

    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
    

    等等

    每次随机选择单词时,我都需要更新文件中的数字

  2. # 2 楼答案

    尽我所能,如果你很容易。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