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