精華區beta java 關於我們 聯絡資訊
http://ppt.cc/ivJt 請問各位大大 我想寫的程式功能是:設計五個問題測驗,要求輸入答案,第一次答對得20分,第二次答對得 10分,第二次答錯不給分,但給予正確答案.每次答完一題,即顯示目前累計得分. 但是我寫的程式出現的bug為,我輸入一次之後它就直接給我衝到最後一次,沒有停下來讓 我再輸入判斷一次... 應該是我的邏輯或寫法上面有問題,請求高手大大糾正我一下 謝謝! 重點問題code區(Problem Point): public void actionPerformed(ActionEvent e) { if(e.getSource() == btnOK){ while(opportunity < 2 && is_pass == false){ switch (opportunity) { case 0: if(txtAnswer.getText().equals("8")){ lblReply.setText("你答對了"); btnOK.setText("下一題"); score += 20; lblScore.setText("目前得分: "+score); is_pass = true; } else{ lblReply.setText("你答錯了"); opportunity += 1; } break; case 1: if(txtAnswer.getText().equals("8")){ lblReply.setText("你答對了"); btnOK.setText("下一題"); score += 10; lblScore.setText("目前得分: "+score); is_pass = true; } else{ lblReply.setText("你答錯了"); txtAnswer.setText("8"); opportunity += 1; } break; } 全部程式碼如下: package BOOK; import java.awt.event.*; import javax.swing.*; class CDialogue extends JFrame implements ActionListener { private JTextField txtAnswer; private JButton btnOK; private JLabel lblTitle, lblQuestion, lblAnswer, lblReply, lblScore; static int number = 1; private boolean is_pass = false; private int opportunity = 0, score = 0; CDialogue(){ lblTitle = new JLabel("第"+number+"題"); lblTitle.setBounds(10, 20, 50, 20); add(lblTitle); lblQuestion = new JLabel("2 + 6 = _______"); lblQuestion.setBounds(10, 50, 150, 20); add(lblQuestion); lblAnswer = new JLabel("作答:"); lblAnswer.setBounds(10, 80, 50, 20); add(lblAnswer); lblReply = new JLabel(""); lblReply.setBounds(10, 110, 100, 20); add(lblReply); lblScore = new JLabel("目前得分:0"); lblScore.setBounds(10, 140, 120, 20); add(lblScore); txtAnswer = new JTextField(""); txtAnswer.setBounds(50, 80, 70, 20); add(txtAnswer); btnOK = new JButton("確定"); btnOK.setBounds(130, 80, 90, 20); add(btnOK); setTitle("測驗"); setLayout(null); setBounds(100, 100, 260, 260); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); btnOK.addActionListener(this); } @Override public void actionPerformed(ActionEvent e) { if(e.getSource() == btnOK){ while(opportunity < 2 && is_pass == false){ switch (opportunity) { case 0: if(txtAnswer.getText().equals("8")){ lblReply.setText("你答對了"); btnOK.setText("下一題"); score += 20; lblScore.setText("目前得分: "+score); is_pass = true; } else{ lblReply.setText("你答錯了"); opportunity += 1; } break; case 1: if(txtAnswer.getText().equals("8")){ lblReply.setText("你答對了"); btnOK.setText("下一題"); score += 10; lblScore.setText("目前得分: "+score); is_pass = true; } else{ lblReply.setText("你答錯了"); txtAnswer.setText("8"); opportunity += 1; } break; } } } } } public class Empathy { public static void main(String[] args){ CDialogue dia = new CDialogue(); } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.236.1