找传奇、传世资源到传世资源站!
Java 正文

java 实现 计算器简单功能

8.5玩家评分(1人评分)
下载后可评
介绍 评论 失效链接反馈

from clipboard
import javax.swing.*;import java.awt.*;import java.awt.event.*;public class MyComputer extends JFrame implements ActionListener{ JTextArea memoryArea=new JTextArea(" ",1,3); JTextArea process=new JTextArea(" ",1,20); JTextArea dispresult=new JTextArea("0. ",1,20); Font font1=new Font("Vani",Font.BOLD,18 ); Font font2=new Font("Arial Rounded MT Bold",Font.PLAIN,10 ); Font font3=new Font("Arial Rounded MT Bold",Font.PLAIN,30 ); Font font4=new Font("Vani",Font.PLAIN,15); JButton[]jbuttons=new JButton[32]; double result=0,first=0,second=0; double memery=0; char firstsymbol='\0',secondsymbol='\0'; boolean prev=true,repeat=true,dot=true; MyComputer() { super("Calculator"); this.setTitle("计算器"); try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch(Exception e) { System.out.println(e); } JPanel resultField=new JPanel(); resultField.setLayout(new GridLayout(3,1)); JPanel buttonField=new JPanel(); Container all=getContentPane(); GridLayout grid1; grid1=new GridLayout(8,4,0,0); memoryArea.setFont(font3); dispresult.setFont(font3); process.setFont(font4); memoryArea.setEditable(false); process.setEditable(false); dispresult.setEditable(false); resultField.add(memoryArea); resultField.add(process); resultField.add(dispresult); all.add(resultField,"North"); String[]buttonname={"MS","MC","MR","M ","1/x","x2","√","㏒","%","sin","cos","tan","CE","C","back","÷","7","8","9","×","4","5","6","-","1","2","3","+","±","0",".","="}; buttonField.setLayout(grid1); //buttonField.setBackground(Color.LIGHT_GRAY); for(int i=0;i<4;i ) { for(int j=0;j<8;j ) { jbuttons[i*8 j]=new JButton(buttonname[i*8 j]); jbuttons[i*8 j].addActionListener(this); //jbuttons[i*8 j].setBackground(Color.red); buttonField.add(jbuttons[i*8 j]); } } for(int j=0;j<4;j ){ jbuttons[j].setFont(font2); //jbuttons[j].setBorderPainted(false); jbuttons[j].setBackground(new Color(250,250,250)); //jbuttons[j].setPreferredSize(new Dimension(40,40)); // jbuttons[j].setBorder(BorderFactory.createRaisedBevelBorder()); } for(int j=4;j<16;j ){ jbuttons[j].setFont(font4); // jbuttons[j].setBorderPainted(false); } for(int j=16;j<32;j ){ jbuttons[j].setFont(font1); //jbuttons[j].setBorderPainted(false); } jbuttons[15].setFont(font4); jbuttons[19].setFont(font4); all.add(buttonField,"Center"); setSize(422,405); setResizable(true); setVisible(true); //this.setResizable(false); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void pressNumber(String n) { process.setText(process.getText() n); if(prev) { dispresult.setText(n); prev=false; } else dispresult.append(n); } public boolean divide(double d) { if(d==0) { dispresult.setText("除数不能为0!"); prev=true; repeat=true; firstsymbol='\0'; secondsymbol='\0'; return true; } return false; } public void actionPerformed(ActionEvent e) { Object source=e.getSource(); if(source==jbuttons[12]) { dispresult.setText("0."); dot=true; prev=true; repeat=true; return; } if(source==jbuttons[13]) { process.setText(null); dispresult.setText("0."); firstsymbol='\0'; secondsymbol='\0'; prev=true; repeat=true; dot=true; return; } if(source==jbuttons[14]){ String text=process.getText(); int i=text.length(); if(i>0){ text=text.substring(0,i-1); if(text.length()==0){ dispresult.setText("0."); process.setText(""); firstsymbol='\0'; secondsymbol='\0'; first=second=0; prev=true; repeat=true; dot=true; } else{ dispresult.setText(text); process.setText(text); } } } if(source==jbuttons[1]) { memery=0; memoryArea.setText(" "); prev=true; repeat=false; dot=true; return; } if(source==jbuttons[29]) { pressNumber("0"); repeat=false; return; } if(source==jbuttons[24]) { pressNumber("1"); repeat=false; return; } if(source==jbuttons[25]) { pressNumber("2"); repeat=false; return; } if(source==jbuttons[4]) { double temp=1/Double.parseDouble(dispresult.getText()); dispresult.setText(String.valueOf(temp)); prev=true; repeat=false; dot=true; return; } if(source==jbuttons[5]) { double temp=Double.parseDouble(dispresult.getText())*Double.parseDouble(dispresult.getText()); dispresult.setText(String.valueOf(temp)); prev=true; repeat=false; dot=true; return; } if(source==jbuttons[6]) { if(-Double.parseDouble(dispresult.getText())<0){ double temp=Math.sqrt(Double.parseDouble(dispresult.getText())); dispresult.setText(String.valueOf(temp)); prev=true; repeat=false; dot=true; return; }else{ dispresult.setText("请输入有效数字"); } } if(source==jbuttons[7]) { if(-Double.parseDouble(dispresult.getText())<0){ double temp=Math.log10(Double.parseDouble(dispresult.getText())); dispresult.setText(String.valueOf(temp)); prev=true; repeat=false; dot=true; return; }else{ dispresult.setText("请输入有效数字"); } } if(source==jbuttons[8]) { double temp=Double.parseDouble(dispresult.getText())/100; dispresult.setText(String.valueOf(temp)); prev=true; repeat=false; dot=true; return; } if(source==jbuttons[9]) { double temp=Math.sin(Double.parseDouble(dispresult.getText())); dispresult.setText(String.valueOf(temp)); prev=true; repeat=false; dot=true; return; } if(source==jbuttons[10]) { double temp=Math.cos(Double.parseDouble(dispresult.getText())); dispresult.setText(String.valueOf(temp)); prev=true; repeat=false; dot=true; return; } if(source==jbuttons[2]) { if(memoryArea.getText().equals(" M ")) dispresult.setText(String.valueOf(memery)); prev=true; repeat=false; dot=true; return; } if(source==jbuttons[26]) { pressNumber("3"); repeat=false; return; } if(source==jbuttons[20]) { pressNumber("4"); repeat=false; return; } if(source==jbuttons[21]) { pressNumber("5"); repeat=false; return; } if(source==jbuttons[11]) { double temp=Math.tan(Double.parseDouble(dispresult.getText())); dispresult.setText(String.valueOf(temp)); prev=true; repeat=false; dot=true; return; } if(source==jbuttons[0]) { memery=Double.parseDouble(dispresult.getText()); if(memery!=0)memoryArea.setText("M"); prev=true; repeat=false; dot=true; return; } if(source==jbuttons[22]) { pressNumber("6"); repeat=false; return; } if(source==jbuttons[16]) { pressNumber("7"); repeat=false; return; } if(source==jbuttons[17]) { pressNumber("8"); repeat=false; return;} if(source==jbuttons[28]) { double temp=-Double.parseDouble(dispresult.getText()); dispresult.setText(String.valueOf(temp)); prev=true; repeat=false; dot=true; return;} if(source==jbuttons[3]) { memery =-Double.parseDouble(dispresult.getText()); if(memery!=0) memoryArea.setText("M"); prev=true; repeat=false; dot=true; return;} if(source==jbuttons[18]) { pressNumber("9"); repeat=false; return; } if(source==jbuttons[30]) { if(dot){ pressNumber("."); dot=false; repeat=false; } return; } if(source==jbuttons[31]) { second=Double.parseDouble(dispresult.getText()); dot=true; switch(secondsymbol) { case'*': second*=first; break; case'/': if(divide(second)) return; second=first/second; }//end of switch(secondsymbol) secondsymbol='\0'; switch(firstsymbol) { case' ': result =second; break; case'-': result-=second; break; case'*': result*=second; dispresult.setText(String.valueOf(result)); break; case'/': if(divide(second)) return; result/=second; }//end of switch(firstsymbol) if(firstsymbol!='\0') dispresult.setText(String.valueOf(result)); firstsymbol='\0'; prev=true; repeat=false; return; } if(source==jbuttons[27]) { process.setText(process.getText() " "); dot=true; if(repeat){ firstsymbol=' '; return; } second=Double.parseDouble(dispresult.getText()); switch(secondsymbol){ case'*': second*=first; break; case'/': if(divide(second))return; second=first/second; }//end of switch(secondsymbol) secondsymbol='\0'; switch(firstsymbol){ case'\0': result=second; firstsymbol=' '; break; case' ': result =second; dispresult.setText(String.valueOf(result)); break; case'-': result-=second; firstsymbol=' '; dispresult.setText(String.valueOf(result)); break; case'*': result*=second; firstsymbol=' '; dispresult.setText(String.valueOf(result)); break; case'/': if(divide(second))return; result/=second; firstsymbol=' '; dispresult.setText(String.valueOf(result)); }//end of switch(firstsymbol) prev=true; repeat=true; return; } if(source==jbuttons[23]) { process.setText(process.getText() "-"); dot=true; if(repeat){ firstsymbol='-'; return; } second=Double.parseDouble(dispresult.getText()); switch(secondsymbol){ case'*': second*=first; break; case'/': if(divide(second))return; second=first/second; } secondsymbol='\0'; switch(firstsymbol){ case'\0': result=second; firstsymbol='-'; break; case' ': result=second; firstsymbol='-'; dispresult.setText(String.valueOf(result)); break; case'-': result-=second; dispresult.setText(String.valueOf(result)); break; case'*': result*=second; firstsymbol='-'; dispresult.setText(String.valueOf(result)); break; case'/': if(divide(second))return; result/=second; firstsymbol='-'; dispresult.setText(String.valueOf(result)); } prev=true; repeat=true; return; } if(source==jbuttons[19]) { process.setText(process.getText() "*"); dot=true; if(repeat){ if(secondsymbol=='\0')firstsymbol='*'; else secondsymbol='*'; return; } second=Double.parseDouble(dispresult.getText()); switch(secondsymbol){ case'\0': switch(firstsymbol){ case'\0': firstsymbol='*'; result=second; break; case' ': case'-': first=second; secondsymbol='*'; break; case'*': result*=second; dispresult.setText(String.valueOf(result)); break; case'/': if(divide(second))return; result/=second; dispresult.setText(String.valueOf(result)); firstsymbol='*'; } break; case'*': first*=second; dispresult.setText(String.valueOf(first)); break; case'/': if(divide(second))return; first/=second; secondsymbol='*'; dispresult.setText(String.valueOf(first)); } prev=true; repeat=true; return; } if(source==jbuttons[15]) { process.setText(process.getText() "/"); dot=true; if(repeat){ if(secondsymbol=='\0')firstsymbol='/'; else secondsymbol='/'; return; } second=Double.parseDouble(dispresult.getText()); switch(secondsymbol){ case'\0': switch(firstsymbol){ case'\0': firstsymbol='/'; result=second; break; case' ': case'-': first=second; secondsymbol='/'; break; case'*': result*=second; firstsymbol='/'; dispresult.setText(String.valueOf(result)); break; case'/': if(divide(second))return; result/=second; dispresult.setText(String.valueOf(result)); }//end of switch(firstsymbol) break; case'*': first*=second; secondsymbol='/'; dispresult.setText(String.valueOf(first)); break; case'/': if(divide(second))return; first/=second; dispresult.setText(String.valueOf(first)); }//end of switch(firstsymbol) prev=true; repeat=true; return; } } public static void main(String args[]) { MyComputer mc=new MyComputer(); }}

评论

发表评论必须先登陆, 您可以 登陆 或者 注册新账号 !


在线咨询: 问题反馈
客服QQ:174666394

有问题请留言,看到后及时答复