当我编译我的java文件并且JVM报告错误时,终端总是会显示一些混乱的代码。即使我可以猜测我有时也不知道会发生什么错误。
那么我可以做任何设置来使编译器以正确的方式报告错误吗?
编译器提供以下报告。
QuizCardBuilder1.java:96: ?Ҳ???????
???ţ? ???? cardList
λ?ã? ?? QuizCardBuilder1.NextCardListener
cardList.add(card);
答案 0 :(得分:0)
当您从浏览器复制/粘贴到本地编辑器时,看起来代码页不匹配。尝试复制/粘贴以下内容以查看是否有问题。
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;
}
}