JVM报告错误时的混乱代码



当我编译java文件时,JVM报告错误,终端总是显示一些混乱的代码。即使我可以通过猜测得出结论,但有时我也不知道到底发生了什么错误。

那么,是否有任何设置可以使编译器以正确的方式报告错误?

编译器给出如下报告:

QuizCardBuilder1.java:96: ?Ҳ???????
???ţ? ???? cardList
λ?ã? ?? QuizCardBuilder1.NextCardListener
cardList.add(card);

当您从浏览器复制/粘贴到本地编辑器时,看起来像是代码页不匹配。试着复制/粘贴下面的内容,看看问题是否解决了。

public class QuizCardBuilder {
private JTextArea           question;
private JTextArea           answer;
private ArrayList<QuizCard> cardList;
private JFrame              frame;
public static void main(final String[] args) {
    final QuizCardBuilder builder = new QuizCardBuilder();
    builder.go();
}
public void go() {
    frame = new JFrame("Quiz Card Builder");
    final JPanel mainPanel = new JPanel();
    final Font bigFont = new Font("sanserif", Font.BOLD, 24);
    question = new JTextArea(6, 20);
    question.setLineWrap(true);
    question.setWrapStyleWord(true);
    question.setFont(bigFont);
    final JScrollPane qScroller = new JScrollPane(question);
    qScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
    qScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
    answer = new JTextArea(6, 20);
    answer.setLineWrap(true);
    answer.setWrapStyleWord(true);
    answer.setFont(bigFont);
    final JScrollPane aScroller = new JScrollPane(answer);
    aScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
    aScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
    final JButton nextButton = new JButton("Next Card");
    cardList = new ArrayList<QuizCard>();
    final JLabel qLabel = new JLabel("Question: ");
    final JLabel aLabel = new JLabel("Answer: ");
    mainPanel.add(qLabel);
    mainPanel.add(qScroller);
    mainPanel.add(aLabel);
    mainPanel.add(aScroller);
    mainPanel.add(nextButton);
    nextButton.addActionListener(new NextCardListener());
    final JMenuBar menuBar = new JMenuBar();
    final JMenu fileMenu = new JMenu("File");
    final JMenuItem newMenuItem = new JMenuItem("New");
    final JMenuItem saveMenuItem = new JMenuItem("Save");
    newMenuItem.addActionListener(new NewMenuListener());
    saveMenuItem.addActionListener(new SaveMenuListener());
    fileMenu.add(newMenuItem);
    fileMenu.add(saveMenuItem);
    menuBar.add(fileMenu);
    frame.setJMenuBar(menuBar);
    frame.getContentPane().add(BorderLayout.CENTER, mainPanel);
    frame.setSize(500, 600);
    frame.setVisible(true);
}
public class NextCardListener implements ActionListener {
    @Override
    public void actionPerformed(final ActionEvent ev) {
        final QuizCard card = new QuizCard(question.getText(), answer.getText());
        cardList.add(card);
        clearCard();
    }
}
public class SaveMenuListener implements ActionListener {
    @Override
    public void actionPerformed(final ActionEvent ev) {
        final QuizCard card = new QuizCard(question.getText(), answer.getText());
        cardList.add(card);
        final JFileChooser fileSave = new JFileChooser();
        fileSave.showSaveDialog(frame);
        saveFile(fileSave.getSelectedFile());
    }
}
public class NewMenuListener implements ActionListener {
    @Override
    public void actionPerformed(final ActionEvent ev) {
        cardList.clear();
        clearCard();
    }
}
private void clearCard() {
    question.requestFocus();
    answer.setText("");
    question.setText("");
}
private void saveFile(final File file) {
    try {
        final BufferedWriter writer = new BufferedWriter(new FileWriter(file));
        for (final QuizCard card : cardList) {
            writer.write(card.getQuestion() + "/");
            writer.write(card.getAnswer() + "n");
        }
        writer.close();
    } catch (final IOException ex) {
        System.out.println("couldn't write the cardList out");
        ex.printStackTrace();
    }
}
}
class QuizCard implements Serializable {
String question;
String answer;
QuizCard(final String q, final String a) {
    question = q;
    answer = a;
}
public String getQuestion() {
    return question;
}
public String getAnswer() {
    return answer;
}
}

最新更新