1

これがコードで、リストからランダムな単語を与え、外部テキスト ファイルにある意味をユーザーに入力させ、正しい場合はその単語をリストから削除し、そうでない場合はその単語を保持して追加します。それをmisswordリストに追加します。問題は、単語がリストから削除されていないことであり、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);
    }
}

}

4

3 に答える 3

2

条件を 2 回評価する必要はありません。

交換

    if(answer.equalsIgnoreCase(stringArray[1])){
        [...]
    }
    if(!answer.equalsIgnoreCase(stringArray[1])){
        [...]
    }

    if(answer.equalsIgnoreCase(stringArray[1])) {
        [...]
    } else {
        [...]
    }

変数を複数の異なる定数と比較する場合は、「else if」を使用します (答えが「エスケープ」と「印刷」を同時にすることはできません)。Nullpointer 例外を回避するために順序を変更します。

if("escape".equalsIgnoreCase(answer)) {
    [...]
} else if("print".equalsIgnoreCase(answer)) {
    [...]
}
于 2013-04-18T13:25:54.283 に答える