java - 词汇学习程序无法正常工作

标签 java

所以这是代码,它的目的是从列表中随机给出一个词,让用户输入外部文本文件中的含义,如果正确,则从列表中删除该词,否则保留单词并将其添加到 missedWord 列表中。问题是单词没有从列表中删除,而且我似乎无法打印 ArrayList。谁能帮我解决这个问题?另外,我可以对代码进行任何改进吗?感谢您的所有帮助。

import java.io.*;
import java.util.*;

public class WordList1 {
public static void main(String[] args) throws IOException{
    boolean fart = true;

    FileReader fr = new FileReader("WL1.txt");
    BufferedReader br = new BufferedReader(fr);

    Scanner console = new Scanner(System.in);

    ArrayList wordArray = new ArrayList();
    ArrayList missedWords = new ArrayList();

    String input, stringArray[] = new String[2], answer;

    while((input=br.readLine())!=null){
        stringArray = input.split(" ");
        wordArray.add(stringArray);
    }

    while(fart){
        stringArray = (String[]) wordArray.get((int)(Math.random()*(wordArray.size())));
        System.out.println(stringArray[0]);
        answer = console.nextLine();
        if(answer.equalsIgnoreCase(stringArray[1])){
            System.out.println("CORRECT");
            wordArray.remove(stringArray[1]);
        }
        if(!answer.equalsIgnoreCase(stringArray[1])){
            System.out.println("INCORRECT, " + stringArray[1]);
            missedWords.add(stringArray[0]);
        }
        if(answer.equalsIgnoreCase("escape")){
            fart = false;
            System.out.println(missedWords);
        }
        if(answer.equalsIgnoreCase("print"))
            System.out.println(wordArray);
    }
}

最佳答案

System.out.println(wordArray) 将在您的 ArrayList 上调用 .toString(),它会为您提供有关引用,但不是列表中的数据。您需要写出列表中的每个元素,而不是列表对象本身:

System.out.println("Words in the array:");
for (String eachWord : wordArray) {
  System.out.println(eachWord);
}

现在,这仅在您已将列表正确定义为字符串列表时才有效。此定义创建任何 Java 对象的列表:

ArrayList wordArray = new ArrayList();

最好指定列表中的元素类型。这是通过使用泛型完成的:

ArrayList<String> wordArray = new ArrayList<>();

假设您的 wordArray 实际上是一个单词列表,但是您的代码将一个整个数组 添加到 wordArray 列表。那给你什么?我想你想要这个:

while((input=br.readLine())!=null){
    stringArray = input.split(" ");
    // Add each word, not the array
    wordArray.addAll(Arrays.asList(stringArray));
}

你的单词没有被删除的问题是一个类似的问题。您的 ArrayList 包含一个字符串数组,但您正试图删除一个字符串。调用 .remove() 不会在您的 ArrayList 中找到字符串。

关于java - 词汇学习程序无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16084058/

相关文章:

java - 有没有办法在 imageView 上实现重做和撤消

java - XML 编写器 Java

java - 单元测试通过反射访问私有(private) map

Java 变量阴影方法覆盖概念

java - 使用 XMLRPC 调用获取 ArrayList 时出现 ClassCastException

java - 如何在我的 Android 应用程序中集成反馈表单,当我单击注销按钮时应打开该反馈表单?

java - 为什么 jaxb 2.2 无法处理元素及其子元素具有相同 ID 的情况?

java 参数类型数组

java - 在每第四个和第三个位置之后,在java中分割字符串的最佳方法是什么?

java.lang.异常 : No tests found matching