计算器

简介: package yz; //引入类 import java.awt.*; import javax.swing.*; import java.awt.event.
package  yz;
//引入类
import  java.awt.*;
import  javax.swing.*;
import  java.awt.event.*;
import  java.math.BigDecimal;
public  class  Yz  extends  JFrame  implements  ActionListener {
     JPanel jsq;
     JTextField txt;
     JButton[] Nums;
     int  f=   0 ;
     Double g= 0.0 ,h= 0.0 ,j= 0.0 ;
     String fh= "" ;
     public  static  void  main(String[] args) {
         Yz y= new  Yz();
     }
     public  Yz(){
         jsq= new  JPanel();
         jsq.setLayout( new  GridLayout(   5 ,   4 ,   4 ,   4 ));
         Nums= new  JButton[  20 ];
         String []a={ "←" , "CE" , "C" , "%" ,
                 "7" , "8" , "9" , "/" ,
                 "4" , "5" , "6" , "*" ,
                 "1" , "2" , "3" , "-" ,
                 "." , "0" , "=" , "+" };
         for ( int  i=   0 ;i<Nums.length;i++){
             Nums[i]= new  JButton(a[i]);
             jsq.add(Nums[i]);
             Nums[i].addActionListener( this ); //注册监听
         }   
         txt= new  JTextField(  10 );
         txt.setText( "" );
         txt.setEditable( false );
         txt.setRequestFocusEnabled( false );
         txt.setHorizontalAlignment(JTextField.RIGHT);
         this .add(txt,BorderLayout.NORTH);
         this .add(jsq);
         this .setVisible( true );      //显示窗体
         this .setSize( 300 , 300 );      //窗体大小
         this .setLocation( 550 , 300 );  //出现位置
         this .setTitle( "计算器" );          //窗体标题
         this .setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭进程
     }
     //监听
     public  void  actionPerformed(ActionEvent e){
         String a=e.getActionCommand();
         int  b= "0123456789" .indexOf(a);
         int  c= "+-*/%" .indexOf(a);
         if (b!=-   1 ){ //如果按下的是数字
             if (f==   0 ){
                 txt.setText(a);
                 f=   1 ;
             }
             else
             {
                 String d = txt.getText();
                 txt.setText(d+a);
             }
         }
         else  if (c!=-   1 ) //如果按下的是运算符
         {
              
  
              if (c==   1 &&f==   0 ){
                  g= 0.0 ;
                  txt.setText(a);
                  f=   1 ;
              }
              else  if (txt.getText().equals( "" )){
                  JOptionPane.showMessageDialog( null "错误" "不能为零请重新输入" , JOptionPane.ERROR_MESSAGE);
              }
              else   {
              g=Double.valueOf(txt.getText());
              fh=a;
              txt.setText( "" );
             f=   0 ;
              }
              
         }
         else  if ( "=" ==a){ //如果按下的是等号
          
              if (txt.getText().equals( "" )){
                  h= 0.0 ;
              }
              else
                  h=Double.valueOf(txt.getText());
              if (fh== "+" ){ //如果按下的是加号
                 String d1 = String.valueOf(g+h).substring(   0 , String.valueOf(g+h).length());
                 double  i;
                 i=Double.valueOf(d1);
                 int  r=( int )i;
                 if (r==Double.valueOf(d1)){
                     d1=d1.substring(   0 , d1.length()-   2 );
                     txt.setText(d1);
                  }
                 else
                     txt.setText(d1);
              
              }
              if (fh== "-" ){ //如果按下的是减号
                    String d2 = String.valueOf(g-h).substring(   0 , String.valueOf(g-h).length());
                     double  i;
                     i=Double.valueOf(d2);
                     if (i>=   0 )
                     {
                         float  r=( float )i;
                          if (r==Double.valueOf(d2)){
                          d2=d2.substring(   0 , d2.length()-   2 );
                          txt.setText(d2);
                          
                          }
                          else {
                          txt.setText(d2);
                          }
                     }
                     else {
                          
                         txt.setText( new  BigDecimal(String.valueOf(g-h).substring(   0 , String.valueOf(g-h).length())).stripTrailingZeros().toString());
                          
                         }
                  }
              if (fh== "*" ){ //如果按下的是乘号
                     String d3 = String.valueOf(g*h).substring(   0 , String.valueOf(g*h).length());
                     double  i;
                     i=Double.valueOf(d3);
                     int  r=( int )i;
                     if (r==i){
                         d3=d3.substring(   0 , d3.length()-   2 );
                         txt.setText(d3);
                      
                      }
                     else {
                         txt.setText(d3);  
                      
                     }
                  }
              if (fh== "/" ){ //如果按下的是除号
                  if (h== 0.0 ){
                      JOptionPane.showMessageDialog( null "错误" "除数不能为零请重新输入" , JOptionPane.ERROR_MESSAGE);
                      txt.setText( "" );
                  }
                  else {
                        String d4 = String.valueOf(g/h).substring(   0 , String.valueOf(g/h).length());
                         double  i;
                         i=Double.valueOf(d4);
                         int  r=( int )i;
                         if (r==Double.valueOf(d4)){
                             d4=d4.substring(   0 , d4.length()-   2 );
                             txt.setText(d4);
                              
                          }
                         else {
                             txt.setText(d4);
                              
                         }
                 
              }
              if (fh== "%" ){
                  String n = txt.getText();
                  txt.setText(String.valueOf(g/ 100 ));
                  }
         }
         else  if ( "CE" ==a){
             h= 0.0 ;
             txt.setText( "" );
        
         else  if ( "C" ==a){
             g= 0.0 ;
             h= 0.0 ;
             f=   0 ;
             txt.setText( "" );
        
         else  if ( "." ==a){
              String n = txt.getText();
              if (txt.getText().trim().indexOf( "." )!=-   1 ) ;
              else
              txt.setText(n+ "." );
         }
         else  if ( "←" ==a){
             String xs=txt.getText();
             if (xs.length()>=   1 )
                 xs=xs.substring(   0 , xs.length()-   1 );
             txt.setText(xs);
         }
     }
}

 

相关文章
|
1天前
|
弹性计算 运维 搜索推荐
三翼鸟携手阿里云ECS g9i:智慧家庭场景的效能革命与未来生活新范式
三翼鸟是海尔智家旗下全球首个智慧家庭场景品牌,致力于提供覆盖衣、食、住、娱的一站式全场景解决方案。截至2025年,服务近1亿家庭,连接设备超5000万台。面对高并发、低延迟与稳定性挑战,全面升级为阿里云ECS g9i实例,实现连接能力提升40%、故障率下降90%、响应速度提升至120ms以内,成本降低20%,推动智慧家庭体验全面跃迁。
|
2天前
|
数据采集 人工智能 自然语言处理
3分钟采集134篇AI文章!深度解析如何通过云无影AgentBay实现25倍并发 + LlamaIndex智能推荐
结合阿里云无影 AgentBay 云端并发采集与 LlamaIndex 智能分析,3分钟高效抓取134篇 AI Agent 文章,实现 AI 推荐、智能问答与知识沉淀,打造从数据获取到价值提炼的完整闭环。
343 90
|
9天前
|
人工智能 自然语言处理 前端开发
Qoder全栈开发实战指南:开启AI驱动的下一代编程范式
Qoder是阿里巴巴于2025年发布的AI编程平台,首创“智能代理式编程”,支持自然语言驱动的全栈开发。通过仓库级理解、多智能体协同与云端沙箱执行,实现从需求到上线的端到端自动化,大幅提升研发效率,重塑程序员角色,引领AI原生开发新范式。
815 156
|
2天前
|
数据采集 缓存 数据可视化
Android 无侵入式数据采集:从手动埋点到字节码插桩的演进之路
本文深入探讨Android无侵入式埋点技术,通过AOP与字节码插桩(如ASM)实现数据采集自动化,彻底解耦业务代码与埋点逻辑。涵盖页面浏览、点击事件自动追踪及注解驱动的半自动化方案,提升数据质量与研发效率,助力团队迈向高效、稳定的智能化埋点体系。(238字)
244 156
|
3天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
10天前
|
机器人 API 调度
基于 DMS Dify+Notebook+Airflow 实现 Agent 的一站式开发
本文提出“DMS Dify + Notebook + Airflow”三位一体架构,解决 Dify 在代码执行与定时调度上的局限。通过 Notebook 扩展 Python 环境,Airflow实现任务调度,构建可扩展、可运维的企业级智能 Agent 系统,提升大模型应用的工程化能力。
|
人工智能 前端开发 API
前端接入通义千问(Qwen)API:5 分钟实现你的 AI 问答助手
本文介绍如何在5分钟内通过前端接入通义千问(Qwen)API,快速打造一个AI问答助手。涵盖API配置、界面设计、流式响应、历史管理、错误重试等核心功能,并提供安全与性能优化建议,助你轻松集成智能对话能力到前端应用中。
795 154