【问题标题】:Reading from text file and give score if word is correct从文本文件中读取并在单词正确时给出分数
【发布时间】:2016-11-04 11:46:26
【问题描述】:

我有一个文本文件中的水果名称列表。 每次按下按钮时,都会以相反的顺序显示水果名称。 用户应该破解水果名称并将其写入文本字段。 当用户按下按钮时,应在水果名称的文本文件列表中验证单词。 如果用户提供的水果名称正确,用户应该得到一个分数并继续使用另一个水果名称。如果不正确,分数保持不变。

每次水果名称正确时,我都在努力打分。 这是我的java代码功能,请帮忙:

public int scoreWord() {
    int scores = 0;
    String filePath = "C:\\names.txt";
    ArrayList<String> list = new ArrayList<>();
    Scanner scan = new Scanner(filePath);

    while (scan.hasNext()) {
        list.add(scan.next());

        for (Iterator<String> it = list.iterator(); it.hasNext();) {
            String ss = correct_word.getText();
            String s = it.next();

            for (String list1 : list) {
                if (s.toLowerCase(Locale.ENGLISH).contains((ss))) {
                    scores = scores + 1;
                } else {
                    int newScore = scores;
                }
            }
        }
    }

    return scores;
}

【问题讨论】:

    标签: java file text


    【解决方案1】:

    您最好将代码中的不同职责分开。我的意思是:绝对不需要一遍又一遍地阅读同一个文本文件。用户在玩此游戏时,其内容不会改变。

    从这个意义上说:您应该首先阅读该文件的内容(例如this)。然后你把这些信息放到List&lt;String&gt; 或者Set&lt;String&gt; 中。稍后,当用户在玩游戏时,您只需将用户输入与您先前通过阅读文件获得的信息进行核对!

    换句话说,你:

    1. 创建一个读取names.txt的新方法;并返回水果名称的列表/集
    2. 然后将该数据结构传递给您的评分方法以完成其工作

    编辑;更多代码让您继续前进:

    Set<String> fruitNames = fetchNamesFromFile("C:\\names.txt");
    ...
    String userGuess = ... the value provided by the user
    String normalizedGuess = userGuess.toLowerCase(Locale.ENGLISH);
    if (fruitNames.contains(normalizedGuess)) {
      ... then user guessed correctly ...
    

    以及获取方法:

    Set<String> fetchAllNamesFromFile(String fname) throws IOException {
       Charset charset = Charset.forName("ISO-8859-1");
       return new HashSet<>(Files.readAllLines(fname, charset);
     }
    

    或类似的东西(请注意:这只是写下来,而不是通过编译器运行 - 它旨在为您提供一些想法;而不是为您完成所有编码工作!)

    当然,这里的假设是您的输入文件看起来像

    fruit1
    fruit2
    ... 
    

    等等。如果您的输入数据看起来不同,则需要做更多的工作。

    【讨论】:

    • 我添加了更多代码。但请理解,我们不是来为您做功课的。这意味着一些灵感,而不是解决您在这里面临的所有挑战!
    • 谢谢。这确实对我有帮助。
    猜你喜欢
    • 2015-05-25
    • 2015-06-09
    • 2015-10-08
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多