-2

ファイルから読み取り、そのファイルからランダムな単語を返す方法に関する質問を投稿しましたが、誰もが「List words = new ArrayList();」を使用すると言い続けています。私はそれを使用しようとしましたが、うまくいきません!

私はすべてを試しました!私はまだ学生なので、Java の初心者です。だからインターネットは最後の選択肢、教科書は役に立たない...

私がしたいのは、そのファイルからランダムな文字列を返し、それを推測単語として使用することだけです

ここに画像の説明を入力

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.ArrayList;
import java.util.Random;
import java.util.*;

public final class Hangman extends JFrame implements ActionListener {
    int i = 0;
    static JPanel panel;
    static JPanel panel2;
    static JPanel panel3;
    static JPanel panel4;

    public Hangman() {
        JButton[] buttons = new JButton[26];

        panel = new JPanel(new GridLayout(0, 9));
        panel2 = new JPanel();
        panel3 = new JPanel();
        panel4 = new JPanel();

        JButton btnRestart = new JButton("Restart");
        btnRestart.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

            }
        });

        JButton btnNewWord = new JButton("Add New Word");
        btnNewWord.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                try {
                    FileWriter fw = new FileWriter("Words.txt", true);
                    PrintWriter pw = new PrintWriter(fw, true);

                    String word = JOptionPane
                            .showInputDialog("Please enter a word: ");

                    pw.println(word);
                    pw.close();
                } catch (IOException ie) {
                    System.out.println("Error Thrown" + ie.getMessage());
                }
            }
        });

        JButton btnHelp = new JButton("Help");
        btnHelp.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String message = "The word to guess is represented by a row of dashes, giving the number of letters and category of the word. \nIf the guessing player suggests a letter which occurs in the word, the other player writes it in all its correct positions. \nIf the suggested letter does not occur in the word, the other player draws one element of the hangman diagram as a tally mark."
                        + "\n"
                        + "\nThe game is over when:"
                        + "\nThe guessing player completes the word, or guesses the whole word correctly"
                        + "\nThe other player completes the diagram";
                JOptionPane.showMessageDialog(null, message, "Help",
                        JOptionPane.INFORMATION_MESSAGE);
            }
        });

        JButton btnExit = new JButton("Exit");
        btnExit.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });
        JLabel lblWord = new JLabel();

        ImageIcon icon = new ImageIcon(
                "D:\\Varsity College\\Prog212Assign1_10-013803\\images\\Hangman1.jpg");
        JLabel label = new JLabel();
        label.setIcon(icon);
        String b[] = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K",
                "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W",
                "X", "Y", "Z" };
        for (i = 0; i < buttons.length; i++) {
            buttons[i] = new JButton(b[i]);

            panel.add(buttons[i]);
        }

        panel2.add(label);

        panel3.add(btnRestart);
        panel3.add(btnNewWord);
        panel3.add(btnHelp);
        panel3.add(btnExit);

        panel4.add(lblWord);
    }

    public void readWord() {
        try {
            BufferedReader reader = new BufferedReader(new FileReader(
                    "Words.txt"));
            String line = reader.readLine();
            List<String> words = new ArrayList<String>();
            while (line != null) {
                String[] wordsLine = line.split(" ");
                for (String word : wordsLine) {
                    words.add(word);
                }
                line = reader.readLine();
            }
            Random rand = new Random(System.currentTimeMillis());
            String randomWord = words.get(rand.nextInt(words.size()));
        } catch (Exception e) {
        }
    }

    public static void main(String[] args) {
        Hangman frame = new Hangman();
        Box mainPanel = Box.createVerticalBox();
        frame.setContentPane(mainPanel);
        mainPanel.add(panel, BorderLayout.NORTH);
        mainPanel.add(panel2);
        mainPanel.add(panel4);
        mainPanel.add(panel3);
        frame.pack();
        frame.setVisible(true);
    }

    public void actionPerformed(ActionEvent e) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
}
4

4 に答える 4

15

ListJavaで呼び出されるクラスは2つあります。java.util.Listjava.awt.Listがあります。誤って混ぜていないことを確認してください。インポートしjava.awt.*ているようですので、Javaはjava.awt.Listが必要だと考えていますが、java.util.Listバージョンでコンパイルする必要があります。List最も簡単なのは、問題のあるステートメントでを完全に修飾することです。

java.util.List<String> words = new ArrayList<String>();
于 2012-08-20T14:34:14.647 に答える
5

あなたの問題は

import java.awt.*;

パッケージには と同じようにjava.awtというクラスが含まれていますが、これは必要なものではありません。干渉を引き起こす両方をインポートしようとしています。また:Listjava.utilList

  • import java.awt.*;使用する特定のクラスのインポートを削除および追加するか、
  • リスト参照をjava.util.List<String>またはとして修飾します
  • ArrayList<String>直接使うだけ
于 2012-08-20T14:35:52.703 に答える
2

java.util.List を明示的にインポートする必要があります

于 2012-08-20T14:37:59.093 に答える
1

エラーはそれをすべて言います:The type List is ambiguous

次の 2 つの異なるクラスを呼び出します。

import java.util.ArrayList;

import java.awt.List;

それはによって呼び出されていますimport java.awt.*;

両方のListインスタンスに同じクラスを使用する必要があります。

例えば:

import java.util.ArrayList;
import java.util.List;

または使用を避けimport java.awt.*;、代わりに使用する

import java.awt.BorderLayout;
import java.awt.GridLayout;

またはArrayList<String>直接使用します:

ArrayList<String> words = new ArrayList<String>();
于 2012-08-20T14:35:26.230 に答える