第一次独立写一个小程序,写到这里不知道百分比号该怎么实现了(语言-java)

img


import java.awt.Color;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.ArrayList;import java.util.regex.Matcher;import java.util.regex.Pattern;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.JTextField;public class Calculator extends JFrame{ JFrame window; public Calculator(){ //窗口及属性 window=new JFrame("计算机"); window.setSize(400,580); window.setLayout(null); window.setResizable(false); window.setDefaultCloseOperation(EXIT_ON_CLOSE); window.setLocationRelativeTo(null); window.setVisible(true); //文本 final JTextField tf= new JTextField(); tf.setBounds(5, 35, 380,125); tf.setHorizontalAlignment(JTextField.RIGHT); tf.setBackground(new Color(192, 192, 192)); //设置字体 粗细 大小 tf.setFont(new Font("Cambria", Font.BOLD, 20)); tf.setEditable(false); window.add(tf); //按钮 int x=20,y=175; int a; String btAll[]={"MC","M+","M-","MR","C","/","X","<--","7","8","9","-", "4","5","6","+","1","2","3","","%","0",".",""}; for(int i=0;i<btAll.length;i++){ final JButton button=new JButton(btAll[i]); button.setBounds(x,y,70,55); x+=90; a=i+1; if(a%4==0) { y+=60; x=20; } if(x!=20||y!=475&&y!=535){//排除并且不创建等于号那部分按钮 window.add(button); } //将按钮数据显示在文本框 class MyListener implements ActionListener { public void actionPerformed(ActionEvent e) { //获取内容 JButton button = (JButton) e.getSource(); String logicStr = button.getText(); //显示,排除不能输入的 if(logicStr=="0"||logicStr=="1"||logicStr=="2"||logicStr=="3" ||logicStr=="4"||logicStr=="5"||logicStr=="6"||logicStr=="7" ||logicStr=="8"||logicStr=="9"||logicStr=="+"||logicStr=="-" ||logicStr=="X"||logicStr=="/"||logicStr=="."||logicStr=="%"){ tf.setText(tf.getText()+logicStr); }else if(logicStr=="C"){//清除 tf.setText(""); }else if(logicStr=="<--") {//删除一个 String text = tf.getText(); text=text.substring( 0 ,text.length()-1 ); tf.setText(text); } } } MyListener ml=new MyListener(); button.addActionListener(ml); //所有键的字符串的字体和大小 if(btAll[i]=="1"||btAll[i]=="2"||btAll[i]=="3"||btAll[i]=="4" ||btAll[i]=="5"||btAll[i]=="6"||btAll[i]=="7"||btAll[i]=="8" ||btAll[i]=="9"){ //数字 button.setFont(new Font("宋体",Font.PLAIN,30)); button.setBorderPainted(false); }else { //字符 button.setFont(new Font("美术字体",Font.BOLD+Font.ITALIC,20)); button.setBorderPainted(false); } //创建= JButton button_eq = new JButton("="); button_eq.setBounds(290,415,70,115); button_eq.setFont(new Font("宋体",Font.BOLD,50)); button_eq.setBorderPainted(false); window.add(button_eq); button_eq.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { String logicStr = tf.getText(); //取出需要计算的数字并存入数组 Pattern n=Pattern.compile("[0-9.%]+"); Matcher nall1=n.matcher(logicStr); ArrayListal=new ArrayList(); while(nall1.find()) { al.add(nall1.group(0)); } //存入数组 for(int i=0;i<al.size();i++){ al.get(i).toString(); } //判断+ - * /并存入数组 Pattern s=Pattern.compile("[+\-X/]"); Matcher nall2=s.matcher(logicStr); ArrayListal1=new ArrayList(); while(nall2.find()) { al1.add(nall2.group(0)); } double over=0,num1=0,num2=0; //再进行计算 for(int i=0;i<al1.size();i++){ try{ String operational =al1.get(i); String num1_=al.get(i); String num2_=al.get(i+1); //如果出现2个及以上+-/ 进行多项运算 if(i>=1) { num1=over; num2=Double.parseDouble(num2_); }else { num1=Double.parseDouble(num1_); num2=Double.parseDouble(num2_); } switch (operational) { case "+": over=num1+num2; break; case "-": over=num1-num2; break; case "X": over=num1num2; break; case "/": over=num1/num2; break; default: break; } //如果出现输入+ - * / 语法错误,则弹窗 }catch(Exception e1){ JOptionPane.showMessageDialog(null, "有错误,请检查输入","错误", JOptionPane.INFORMATION_MESSAGE); break; } } tf.setText(""+over);//加"”使over由double转换为string } }); }} public static void main(String [] args){ new Calculator(); }}

转成Bigdecimal除于100,取两位小数,向上或者向下