package work1;
import java.awt.List;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.function.IntToDoubleFunction;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class TestMain {
JFrame jFrame;//成员变量,未设置访问类型,默认包内访问,先创建一个JF对象
String stringx;//保存第一个变量
public static void main(String[] args) {
// TODO 自动生成的方法存根
TestMain testMain=new TestMain();
testMain.initView();
}
public void initView() {
jFrame=new JFrame("好好学习");//第一步,初始化
jFrame.setBounds(500, 500, 600, 600);//第二步,设置位置大小
jFrame.setLayout(null);//控制布局 null为不使用系统所给的任何一种布局
final JTextField jTextField=new JTextField();
jTextField.setBounds(50, 50,500, 50);
jFrame.add(jTextField);
//数字符******************************************************************
JButton jButton0=new JButton("0");//********00000000000000000
jButton0.setBounds(50, 100, 50, 50);
jFrame.add(jButton0);
jButton0.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
String string =jTextField.getText().trim();//去掉两端空格的代码trim
if(!string.equals("0"))
{
string=string+"0";
jTextField.setText(string);
}
}
});
JButton jButton1=new JButton("1");//**********111111111111111111111111
jButton1.setBounds(100, 100, 50, 50);
jFrame.add(jButton1);
jButton1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
String string= jTextField.getText().trim();
if(string.equals("0"))
{
jTextField.setText("1");
}
else
{
string=string+"1";
jTextField.setText(string);
}
}
}) ;
JButton jButton2=new JButton("2");
jButton2.setBounds(150, 100, 50, 50);
jFrame.add(jButton2);
jButton1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
String string= jTextField.getText().trim();
if(string.equals("0"))
{
jTextField.setText("2");
}
else
{
string=string+"2";
jTextField.setText(string);
}
}
}) ;
//数字符***************************数字符***************************************
//运算符***************************运算符***************************************
JButton jButton11=new JButton("+");
jButton11.setBounds(150, 150, 50, 50);
jButton11.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
jTextField.setText(jTextField.getText()+"+");
}
});
jFrame.add(jButton11);
//运算符***************************运算符***************************************
//操作符***************************操作符***************************************
JButton jButtonC=new JButton("C");//清零
jButtonC.setBounds(50, 150, 50, 50);
jButtonC.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
jTextField.setText("0");
}
});
jFrame.add(jButtonC);//................................
JButton jButtonD=new JButton(".");//加点
jButtonD.setBounds(100,150, 50, 50);
jButtonD.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
String string=jTextField.getText();
if(!string.contains("."))
{
string=string+".";
}
}
});
jFrame.add(jButtonD);
JButton jButtonE=new JButton("=");//结果
jButtonE.setBounds(200,150, 50, 50);
jButtonE.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
ArrayList<Integer> op=new ArrayList<Integer>();
ArrayList<Double> sum=new ArrayList<Double>();
String string=jTextField.getText()+"+";
double num1=0;//乘除号前面的值
int mark=0;//乘除标志词
double t=0;//每个数的值
int m=Integer.valueOf('*');
int n=Integer.valueOf('/');
int a=Integer.valueOf('0');
int b=Integer.valueOf('9');
int ad=Integer.valueOf('+');
for(int i=0;i<string.length();i++)
{
int num=Integer.valueOf(string.charAt(i));
//将i的字符转化为asc码
if(a<=num&&num<=b)
{
t=t*10+(num-a);
}
else
{
if(mark!=0)
t=(mark==1)?(t*num1):(t/num1);//求出乘除运算结果赋值给t
if(num==m)
{
num1=t;
mark=1;
}//如果后面是*,则标记乘号,将乘号前的那个数赋值给num1保存
else
if(num==n)
{
num1=t;
mark=2;
}
else {//加减 则保存
mark=0;
op.add(num);//存符号
sum.add(t);//存数据
}
t=0;
}
}
double ans=sum.get(0);//答案 4 2
for(int i=1;i<sum.size();i++)
{
Double num2=sum.get(i);
int op1=op.get(i-1);
ans=(op1==ad)?(ans+num2):(ans-num2);
}
jTextField.setText(Double.toString(ans));
}
});
jFrame.add(jButtonE);
jFrame.setVisible(true);//第三部,让界面显示出来,这句话一定在最后
//但凡是成对的元素,必须要先写出来再将光标移到中间写其他的代码
}
}
JAVA简单计算器乘法
最新推荐文章于 2024-09-26 09:19:23 发布