java实现带界面的计算器小程序遇到的问题

shecaichou4827 2016-11-28 08:19:33
代码如下,目前遇到的问题是点击除法按钮'/',得到的结果类似于两个数取余,是什么情况例如7/2=1,8/2=0;
resultNum=Double.parseDouble(s0)/Double.parseDouble(s1);
resultNum是最终显示在文本框内的,控制台输出的结果是正确的为什么显示不正确呢?
初学者还请多多支教
完整代码如下:
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Calculator6 extends JFrame implements ActionListener
{
JFrame frame =new JFrame();
JPanel panel =new JPanel();
JTextField textField =new JTextField(30);
private final String[] KEYS = { "7", "8", "9", "4", "5", "6","1", "2", "3","0","+", "-","*", "/", "%", "清零","+/-", ".", "sqrt", "^","=","BACKSPACE" };
private JButton keys[] = new JButton[KEYS.length];
private boolean firstDigit =false;
private double resultNum ;
int j=0;
char temp;
String s0;
String s1;
String s3;
public Calculator6()
{
for (int i = 0; i < KEYS.length; i++)
{
System.out.println(i+"---------"+KEYS[i]);

}
//JButton button=new JButton("BACKSPACE");
textField.setEditable(false);
setResizable(false);
setLayout(new BorderLayout());
panel.add(textField);
JPanel calckeysPanel = new JPanel();
calckeysPanel.setLayout(new GridLayout(8,3 , 5, 5));
for (int i = 0; i < KEYS.length; i++)
{
keys[i] = new JButton(KEYS[i]);
keys[i].addActionListener(this);
calckeysPanel.add(keys[i]);
keys[i].setForeground(Color.blue);

}
//calckeysPanel.add(button);
//button.addActionListener(this);

add(calckeysPanel,BorderLayout.CENTER);
add(panel,BorderLayout.NORTH);
setTitle("计算器");
setVisible(true);
setSize(300, 200);
pack();
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}

public static void main(String[] args)
{
new Calculator6();
}

@Override
public void actionPerformed(ActionEvent e)
{
// TODO Auto-generated method stub
if(e.getSource()==keys[0])
{
if (firstDigit==false)
{
textField.setText(textField.getText()+7);
}
else
{
textField.setText(textField.getText()+7);
}
}
if(e.getSource()==keys[1])
{
if (firstDigit==false)
{
textField.setText(textField.getText()+8);
}
else
{
textField.setText(textField.getText()+8);
}
}
if(e.getSource()==keys[2])
{
if (firstDigit==false)
{
textField.setText(textField.getText()+9);
}
else
{
textField.setText(textField.getText()+9);
}
}
if(e.getSource()==keys[3])
{
if (firstDigit==false)
{
textField.setText(textField.getText()+4);
}
else
{
textField.setText(textField.getText()+4);
}
}
if(e.getSource()==keys[4])
{
if (firstDigit==false)
{
textField.setText(textField.getText()+5);
}
else
{
textField.setText(textField.getText()+5);
}
}
if(e.getSource()==keys[5])
{
if (firstDigit==false)
{
textField.setText(textField.getText()+6);
}
else
{
textField.setText(textField.getText()+6);
}
}

if(e.getSource()==keys[6])
{
if (firstDigit==false)
{
textField.setText(textField.getText()+1);
}
else
{
textField.setText(textField.getText()+1);
}
}
if(e.getSource()==keys[7])
{
if (firstDigit==false)
{
textField.setText(textField.getText()+2);
}
else
{
textField.setText(textField.getText()+2);
}
}
if(e.getSource()==keys[8])
{
if (firstDigit==false)
{
textField.setText(textField.getText()+3);
}
else
{
textField.setText(textField.getText()+3);
}
}
if(e.getSource()==keys[9])
{
if (firstDigit==false)
{
textField.setText(textField.getText()+0);
}
else
{
textField.setText(textField.getText()+0);
}
}
if(e.getSource()==keys[10])
{
s0=textField.getText();
firstDigit=true;
textField.setText("");
temp='+';
}
if(e.getSource()==keys[11])
{
s0=textField.getText();
firstDigit=true;
textField.setText("");
temp='-';
}
if(e.getSource()==keys[12])
{
s0=textField.getText();
firstDigit=true;
textField.setText("");
temp='*';
}
if(e.getSource()==keys[13])
{
s0=textField.getText();
firstDigit=true;
textField.setText("");
temp='/';
}
if(e.getSource()==keys[14])
{
s0=textField.getText();
firstDigit=true;
textField.setText("");
temp='%';
}
if(e.getSource()==keys[15])
{
firstDigit=false;
s0="";
s1="";
textField.setText("");
}
if(e.getSource()==keys[17])
{
if (firstDigit==false)
{
textField.setText(textField.getText()+".");
}
else
{
textField.setText(textField.getText()+".");
}
}
if(e.getSource()==keys[18])
{
firstDigit=true;
s0=textField.getText();
// textField.setText("sqrt");
textField.setText("");
temp='s';
}
if(e.getSource()==keys[19])
{
firstDigit=true;
s0=textField.getText();
textField.setText("");
temp='^';
}
if(e.getSource()==keys[20])
{
if (firstDigit==true)
{
switch (temp)
{
case '+':
s1=textField.getText();
resultNum=Double.parseDouble(s0)+Double.parseDouble(s1);
break;
case '-':
s1=textField.getText();
resultNum=Double.parseDouble(s0)-Double.parseDouble(s1);
break;
case '*':
s1=textField.getText();
resultNum=Double.parseDouble(s0)*Double.parseDouble(s1);
break;
case '/':
s1=textField.getText();
resultNum=Double.parseDouble(s0)/Double.parseDouble(s1);
//System.out.println(s0);
//System.out.println(s1);
//System.out.println(resultNum);
case '%':
s1=textField.getText();
resultNum=Double.parseDouble(s0)%Double.parseDouble(s1);

break;
case 's':
s1=textField.getText();
resultNum=Math.sqrt(Double.parseDouble(s0));

break;
case '^':
s1=textField.getText();
resultNum=Math.pow(Double.parseDouble(s0),Double.parseDouble(s1));
default:
break;
}
//resultNum=(double)Math.round(resultNum*1000)/1000;
textField.setText(""+resultNum);
}
}
if(e.getSource()==keys[21])
{
int i=textField.getText().length();
if(i>0)
{
textField.setText(textField.getText().substring(0,i-1));
}
if(i==0)
{
textField.setText("");
}
}
}

}
...全文
227 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
shecaichou4827 2016-11-30
  • 打赏
  • 举报
回复
最后自己找到了,我好傻
晴天_ccc 2016-11-28
  • 打赏
  • 举报
回复
case '/': s1=textField.getText(); resultNum=Double.parseDouble(s0)/Double.parseDouble(s1); //System.out.println(s0); //System.out.println(s1); //System.out.println(resultNum); 这后面加上break;

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧