代码如下,目前遇到的问题是点击除法按钮'/',得到的结果类似于两个数取余,是什么情况例如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("");
}
}
}
}
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("");
}
}
}
}
解决方案 »
- 这段代码有一点不明白,请高手帮帮忙,谢谢!
- 关于JAVA上传图片处理的问题,请大家进来帮忙,明天一早要用,很急,谢谢。
- 一个超难的问题,急盼高手
- 建立实例的问题,请进来指点有关new的使用
- 安装了Borland JBuilder 9 Enterprise Trial,可不会用这个软件.有谁能教我怎样熟练掌握这个软件的使用?我是新手.在线等候!
- 求一个SWING下的报表工具(一定要C/S不要B/S的)谢谢。
- Java有汇编软件吗?
- 大家来看:跟踪csdn贴子的好助手
- 谁有输入校验的代码啊?比如时间录入,只能录时间,按下字母键无效
- 急求JRun3.0的注册码!!!
- 求大神指导这句有什么问题ObjectInputStream ob = new ObjectInputStream(fk);
- JAVA利用SOCKET实现的客户端和服务端之间的通讯问题
s1=textField.getText();
resultNum=Double.parseDouble(s0)/Double.parseDouble(s1);
//System.out.println(s0);
//System.out.println(s1);
//System.out.println(resultNum);这后面加上break;