想弄一個取余的計算器,但是一直報錯說被除數等于零(運行的時候先按一個數字,再按取余號就報錯說被除數為零)如圖是程式的代碼.


uj5u.com熱心網友回復:
因為你的number初始化就是為零,這是你程式的邏輯問題,按了運算就運算肯定不行啊!起碼要等第2個數輸入后才行。
uj5u.com熱心網友回復:
不是的,文本框初始內容確實為0??,但是按下某一個按鈕后文本框的內容就變成按過的所有數字了,然后按下運算按鈕就進行傳值,從而currentNumber的值變成文本框里的數字。而且這個運算結果永遠等于按下取余號之前的值uj5u.com熱心網友回復:
不是的,文本框初始內容確實為0??,但是按下某一個按鈕后文本框的內容就變成按過的所有數字了,然后按下運算按鈕就進行傳值,從而currentNumber的值變成文本框里的數字。而且這個運算結果永遠等于按下取余號之前的值
你沒看到你的錯誤是在81行么? 你的程式邏輯有問題,你的程式和你所要實作的根本就是2回事,你的compute方法中的before為‘?’就沒有實作過,所以你的number就一直是0。
uj5u.com熱心網友回復:
你的程式看起來真費勁,把actionPerformed改成下面的就好了,為什么監視器里會有回圈!
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
String str = jtf.getText();
JButton btn = (JButton) arg0.getSource();
if (btn.getText().equals("=")) {
compute('=');
equal = true;
} else if (btn.getText().equals("%")) {
compute('%');
jtf.setText("0");
equal = false;
} else if (str.equals("0")) {
jtf.setText("" + btn.getText());
} else if (operate) {
jtf.setText("" + btn.getText());
operate = false;
} else {
jtf.setText(str + btn.getText());
}
}
uj5u.com熱心網友回復:
你的程式看起來真費勁,把actionPerformed改成下面的就好了,為什么監視器里會有回圈!
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
String str = jtf.getText();
JButton btn = (JButton) arg0.getSource();
if (btn.getText().equals("=")) {
compute('=');
equal = true;
} else if (btn.getText().equals("%")) {
compute('%');
jtf.setText("0");
equal = false;
} else if (str.equals("0")) {
jtf.setText("" + btn.getText());
} else if (operate) {
jtf.setText("" + btn.getText());
operate = false;
} else {
jtf.setText(str + btn.getText());
}
}
uj5u.com熱心網友回復:
不是的,文本框初始內容確實為0??,但是按下某一個按鈕后文本框的內容就變成按過的所有數字了,然后按下運算按鈕就進行傳值,從而currentNumber的值變成文本框里的數字。而且這個運算結果永遠等于按下取余號之前的值
你沒看到你的錯誤是在81行么? 你的程式邏輯有問題,你的程式和你所要實作的根本就是2回事,你的compute方法中的before為‘?’就沒有實作過,所以你的number就一直是0。
uj5u.com熱心網友回復:
我試了試,你的這個方法好像行不通,因為我按等號的時候文本框會顯示=,這樣就有erreo了
@SuppressWarnings("serial")
public class MyFrame extends JFrame implements ActionListener {
String s[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "%", "=" };
JPanel contenPanel, jp1;
JButton bt[] = new JButton[s.length];
JTextField jtf;
char before = '0';
int number = 0;
boolean operate = false, equal = false;
public MyFrame() {
// TODO Auto-generated constructor stub
setSize(300, 200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setTitle("取余計算器");
setResizable(false);
setLocationRelativeTo(null);
JPanel contentPanel = (JPanel) getContentPane();
jtf = new JTextField("0");
jtf.setEditable(false);
GridLayout layout = new GridLayout(3, 0, 5, 5);
jp1 = new JPanel();
jp1.setLayout(layout);
for (int i = 0; i < s.length; i++) {
bt[i] = new JButton(s[i]);
jp1.add(bt[i]);
bt[i].addActionListener(this);
}
contentPanel.add(jp1);
contentPanel.add(jtf, BorderLayout.NORTH);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
String str = jtf.getText();
String btn = ((JButton) arg0.getSource()).getText();
while(before=='=') {
if(!btn.equals("=")&&!btn.equals("%")) {
jtf.setText("" + btn);
}else {
jtf.setText("0");
}
before='0';
}
if (!str.equals("0")) {
if(before=='%'&& btn.equals("=")){
compute('=');
}else if( before=='0' && btn.equals("%")){
compute('%');
}else if(!btn.equals("=")&&!btn.equals("%")) {
jtf.setText(str + btn);
}
}else if(!btn.equals("=")&&!btn.equals("%")) {
jtf.setText("" + btn);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new MyFrame();
}
public void compute(char how) {
int currentNumber = Integer.valueOf(jtf.getText());
if (how == '%') {
number = currentNumber;
jtf.setText("0");
before = '%';
} else {
number = number % currentNumber;
jtf.setText(String.valueOf(number));
before = '=';
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/97483.html
標籤:Eclipse
上一篇:java類物件陣列問題
下一篇:做一個程式
