麻烦大家帮我看看这个java程序哪里有问题吧。
packageGUI;importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;publicclassCac...
package GUI;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Caculator extends JFrame implements ActionListener{
private String name[]={"0","1","2","3","4","5","6","7","8","9","+","-","*","/",".","=","←","归0"};
private JButton button[]=new JButton[name.length];
JPanel jp1,jp2;
JTextField jt;
String ch;
double n,m,result;
Caculator() {
super("caculator");
m=n=result=0;
jp1=new JPanel();
jp2=new JPanel();
jp1.setLayout(new GridLayout(3,6,4,4));
jp2.setLayout(new FlowLayout());
jt=new JTextField(10);
jp2.add(jt);
for(int i=0;i<name.length;i++)
{
button[i]=new JButton(name[i]);
jp1.add(button[i]);
button[i].addActionListener(this);
}
this.setLayout(new GridLayout(2,1));
this.add(jp2);
this.add(jp1);
setSize(400,300);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
String act = e.getActionCommand();
if (act.equals("←")) {
if (jt.getText().length() > 1)
jt.setText(jt.getText().substring(0, jt.getText().length() - 1));
else
jt.setText("0");
return;
}
if (act.equals("归0")) {
jt.setText("0");
ch = "!";
return;
}
if (act.equals(".")) {
jt.setText(jt.getText());
}
if (act.equals("+") || act.equals("-") || act.equals("*")
|| act.equals("/")) {
ch = act;
if (jt.getText().length() > 0) {
n = Float.parseFloat(jt.getText());
jt.setText("");
} else
n = 0;
}
if (act.equals("=")) {
{
if (jt.getText().length() > 0) {
m = Float.parseFloat(jt.getText());
jt.setText("");
} else
m = 0;
}
switch (ch.charAt(0)) {
case '+':
result = m + n;
ch = "!";
break;
case '-':
result = n - m;
ch = "!";
break;
case '*':
result = m * n;
ch = "!";
break;
case '/':
ch = "!";
if (m == 0)
jt.setText("除数不能为0");
else
result = n / m;
break;
default:
result = 0;
}
jt.setText(String.valueOf(result));
}
else {
if (jt.getText().equals("0"))
jt.setText(act);
else
jt.setText(jt.getText() + act);
}
}
public static void main(String args[]){
new Caculator();
}
} 展开
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Caculator extends JFrame implements ActionListener{
private String name[]={"0","1","2","3","4","5","6","7","8","9","+","-","*","/",".","=","←","归0"};
private JButton button[]=new JButton[name.length];
JPanel jp1,jp2;
JTextField jt;
String ch;
double n,m,result;
Caculator() {
super("caculator");
m=n=result=0;
jp1=new JPanel();
jp2=new JPanel();
jp1.setLayout(new GridLayout(3,6,4,4));
jp2.setLayout(new FlowLayout());
jt=new JTextField(10);
jp2.add(jt);
for(int i=0;i<name.length;i++)
{
button[i]=new JButton(name[i]);
jp1.add(button[i]);
button[i].addActionListener(this);
}
this.setLayout(new GridLayout(2,1));
this.add(jp2);
this.add(jp1);
setSize(400,300);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
String act = e.getActionCommand();
if (act.equals("←")) {
if (jt.getText().length() > 1)
jt.setText(jt.getText().substring(0, jt.getText().length() - 1));
else
jt.setText("0");
return;
}
if (act.equals("归0")) {
jt.setText("0");
ch = "!";
return;
}
if (act.equals(".")) {
jt.setText(jt.getText());
}
if (act.equals("+") || act.equals("-") || act.equals("*")
|| act.equals("/")) {
ch = act;
if (jt.getText().length() > 0) {
n = Float.parseFloat(jt.getText());
jt.setText("");
} else
n = 0;
}
if (act.equals("=")) {
{
if (jt.getText().length() > 0) {
m = Float.parseFloat(jt.getText());
jt.setText("");
} else
m = 0;
}
switch (ch.charAt(0)) {
case '+':
result = m + n;
ch = "!";
break;
case '-':
result = n - m;
ch = "!";
break;
case '*':
result = m * n;
ch = "!";
break;
case '/':
ch = "!";
if (m == 0)
jt.setText("除数不能为0");
else
result = n / m;
break;
default:
result = 0;
}
jt.setText(String.valueOf(result));
}
else {
if (jt.getText().equals("0"))
jt.setText(act);
else
jt.setText(jt.getText() + act);
}
}
public static void main(String args[]){
new Caculator();
}
} 展开
2个回答
展开全部
把这句话
if (act.equals("=")) {
{
if (jt.getText().length() > 0) {
m = Float.parseFloat(jt.getText());
jt.setText("");
} else
m = 0;
}
改成
if (act.equals("=")) {
{
if (jt.getText().length() > 0) {
m = Float.parseFloat(jt.getText().substring(1));
jt.setText("");
} else
m = 0;
}
加个substring问题就解决了。你在运算钱没有把那个符号拿掉
你在算1+1的时候其实是1+(+1),这个java是会给你2的
但是算减的时候就变成了1-(-1),答案就会变成还是2了。
当你算乘法的时候就变成了1*(*1),所以就没有答案了。
拿掉之前的那个符号就行了。
if (act.equals("=")) {
{
if (jt.getText().length() > 0) {
m = Float.parseFloat(jt.getText());
jt.setText("");
} else
m = 0;
}
改成
if (act.equals("=")) {
{
if (jt.getText().length() > 0) {
m = Float.parseFloat(jt.getText().substring(1));
jt.setText("");
} else
m = 0;
}
加个substring问题就解决了。你在运算钱没有把那个符号拿掉
你在算1+1的时候其实是1+(+1),这个java是会给你2的
但是算减的时候就变成了1-(-1),答案就会变成还是2了。
当你算乘法的时候就变成了1*(*1),所以就没有答案了。
拿掉之前的那个符号就行了。
展开全部
运行没有出错。没有问题呀
更多追问追答
追问
减法、乘法、除法有问题
追答
if (act.equals("=")) {
{
if (jt.getText().length() > 0) {
m = Float.parseFloat(jt.getText().substring(1,jt.getText().length()));
jt.setText("");
} else
m = 0;
}
判断等号的时候要把上一次写的东西处理一下,把符号给去掉。
你的减除乘有问题就是因为有了这些符号,导致string没办法转成float
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询