计算器(原创)

本文介绍了一个简易计算器的设计与实现过程,采用Java Swing进行图形界面开发,实现了基本的加减乘除运算功能。通过监听按钮点击事件,动态更新显示结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

import java.awt.*; 
import java.util.ArrayList; 
import java.util.Iterator; 
import java.lang.Double; 
import java.text.*; 
import java.awt.event.*; 
import javax.swing.*; 
public class CalculatorFrame extends Frame implements ActionListener 
{ 
private TextField text;//text_input; 
public boolean firstWrite = true; 
public boolean firstCalculate = true; 
public JPanel   cPanel1, cPanel2, cPanel3, cPanel4; 
private Button button_0,button_1,button_2,button_3,button_4,button_5,button_6,button_7,button_8, 
button_9,button_jia,button_jian,button_cheng,button_chu,button_cancel,button_deng; 
public CalculatorFrame() 
{ 
   JFrame jf = new JFrame("简易计算器"); 
   //super("简易计算器"); 
   cPanel1 = new JPanel(); 
   cPanel2 = new JPanel(new GridLayout(3,3)); 
   cPanel3 = new JPanel(new GridLayout(1,3)); 
   cPanel4 = new JPanel(new GridLayout(4,1)); 

   //this.setLayout(new GridLayout(1,1)); 

   text=new TextField(30); 
   text.setEditable(false); 
   text.setBackground (Color.white); 
   cPanel1.add(text); 
   //this.add(text_input); 
   //this.setLayout(new GridLayout(4,4)); 
   button_0=new Button("0"); 
   button_0.setBackground ( Color.getColor ("#000ffff") ); 
   button_1=new Button("1"); 
   button_2=new Button("2"); 
   button_3=new Button("3"); 
   button_4=new Button("4"); 
   button_5=new Button("5"); 
   button_6=new Button("6"); 
   button_7=new Button("7"); 
   button_8=new Button("8"); 
   button_9=new Button("9"); 
   button_jia=new Button("+"); 
   button_jian=new Button("-"); 
   button_cheng=new Button("*"); 
   button_chu=new Button("/"); 
   button_cancel=new Button("c"); 
   button_deng=new Button("="); 
   cPanel3.add(button_0); 
   cPanel2.add(button_1); 
   cPanel2.add(button_2); 
   cPanel2.add(button_3); 
   cPanel2.add(button_4); 
   cPanel2.add(button_5); 
   cPanel2.add(button_6); 
   cPanel2.add(button_7); 
     cPanel2.add(button_8); 
     cPanel2.add(button_9); 
     cPanel4.add(button_jia); 
     cPanel4.add(button_jian); 
     cPanel4.add(button_cheng); 
     cPanel4.add(button_chu); 
     cPanel3.add(button_cancel); 
     cPanel3.add(button_deng); 

     button_0.addActionListener(this); 
     button_1.addActionListener(this); 
     button_2.addActionListener(this); 
     button_3.addActionListener(this); 
     button_4.addActionListener(this); 
     button_5.addActionListener(this); 
     button_6.addActionListener(this); 
     button_7.addActionListener(this); 
     button_8.addActionListener(this); 
     button_9.addActionListener(this); 
     button_jia.addActionListener(this); 
     button_jian.addActionListener(this); 
     button_cheng.addActionListener(this); 
     button_chu.addActionListener(this); 
     button_cancel.addActionListener(this); 
     button_deng.addActionListener(this); 


     jf.addWindowListener(new WinClose()); 
     jf.getContentPane ().add (cPanel1, "North"); 
     jf.getContentPane ().add (cPanel2, "Center"); 
     jf.getContentPane ().add (cPanel3, "South"); 
     jf.getContentPane ().add (cPanel4, "East"); 
     cPanel1.setSize (20,40); 
     cPanel2.setSize (210,210); 
     cPanel3.setSize (70,280); 
     cPanel4.setSize (210,70); 
     jf.setSize (400,400); 
     jf.setLocation (300,300); 
     jf.setVisible (true); 
     } 
   public void result(ActionEvent e) 
   { 
     int cheng = 0; 
     int chu = 0; 
     int jia = 0; 
     int jian = 0; 
     double result=0.0; 
     String showResult = null; 
     /*---- 
     boolean one = true; 
     int whichSymbol = 1; 
     int m = saveCommand.size(); 
     for(int i= 0;i < m;i++) 
     { 
       switch(saveCommand.get(i)) 
       { 
       case '0':if(one)numFir=0;else numSec[I]=0; break; 
       case '1':if(one)numFir[I]=1;else numSec[I]=1; break; 
       case '2':if(one)numFir[I]=2;else numSec[I]=2; break; 
       case '3':if(one)numFir[I]=3;else numSec[I]=3; break; 
       case '4':if(one)numFir[I]=4;else numSec[I]=4; break; 
       case '5':if(one)numFir[I]=5;else numSec[I]=5; break; 
       case '6':if(one)numFir[I]=6;else numSec[I]=6; break; 
       case '7':if(one)numFir[I]=7;else numSec[I]=7; break; 
       case '8':if(one)numFir[I]=8;else numSec[I]=8; break; 
       case '9':if(one)numFir[I]=9;else numSec[I]=9; break; 
       case '*':whichSymbol=4; break; 
       case '/':whichSymbol=3; break; 
       case '+':whichSymbol=2; break; 
       case '-':whichSymbol=1; break; 
       default :break; 
       } 
     } 
   ---*/ 
   String commandArray = text.getText(); 
   cheng = commandArray.indexOf('*'); 
   chu = commandArray.indexOf('/'); 
     jia = commandArray.indexOf('+'); 
   jian = commandArray.indexOf('-'); 
   if(0<cheng && cheng<8) 
   { 
   double firNum = Double.parseDouble(commandArray.substring(0,cheng)); 
   double sndNum = Double.parseDouble(commandArray.substring(cheng+1)); 
   result = firNum * sndNum; 
   showResult = String.valueOf(result); 
   if(showResult.length()>6) 
     showResult.substring(0,6); 


   } 
   if(0<chu && chu<8) 
   { 
   double firNum = Double.parseDouble(commandArray.substring(0,chu)); 
   double sndNum = Double.parseDouble(commandArray.substring(chu+1)); 
   result = firNum / sndNum; 
   //result = Math.round(result); 
   DecimalFormat decimal = new DecimalFormat("#.######"); 
   //String piStr = decimal.format(pi); 
     //showResult = String.valueOf(result); 
   showResult = decimal.format(result); 
   } 
   if(0<jia && jia<8) 
   { 
   double firNum = Double.parseDouble(commandArray.substring(0,jia)); 
   double sndNum = Double.parseDouble(commandArray.substring(jia+1)); 
   result = firNum + sndNum; 
   showResult = String.valueOf(result); 
   if(showResult.length()>6) 
     showResult.substring(0,6); 
   } 
   if(0<jian && jian<8) 
   { 
   double firNum = Double.parseDouble(commandArray.substring(0,jian)); 
   double sndNum = Double.parseDouble(commandArray.substring(jian+1)); 
   result = firNum - sndNum; 
   showResult = String.valueOf(result); 
   if(showResult.length()>6) 
     showResult.substring(0,6); 
   } 
   //if(Math.abs(result)>0.0000001&&Math.abs(result)<10000000) 
   //{ 
   firstCalculate = true; 
   firstWrite = true; 
   text.setText(""+showResult); 
   //} 
     //else 
     //{ 
       //firstWrite = false; 
       //text.setText("Error"); 
     //} 
   } 
   public void actionPerformed(ActionEvent e) 
   { 
   int i=0; 
     ArrayList saveCommand=new ArrayList(); 
     if(e.getSource()==button_cancel) 
       text.setText(""); 

     if(e.getSource() == button_deng) 
     { 
     this.result(e); 
     } 
     if(e.getSource() == button_0) 
     { 
     //saveCommand.add("0"); 
     if(firstWrite) 
     { 
       text.setText(""+e.getActionCommand()); 
       firstWrite = false; 
     } 
     else 
       text.setText(text.getText()+e.getActionCommand()); 
     } 
     if(e.getSource() == button_1) 
     { 
     //saveCommand.add("1"); 
     if(firstWrite) 
     { 
       text.setText(""+e.getActionCommand()); 
       firstWrite = false; 
     } 
     else 
       text.setText(text.getText()+e.getActionCommand()); 
     } 
     if(e.getSource() == button_2) 
     { 
     //saveCommand.add("2"); 
     if(firstWrite) 
     { 
       text.setText(""+e.getActionCommand()); 
       firstWrite = false; 
     } 
     else 
       text.setText(text.getText()+e.getActionCommand()); 
     } 
     if(e.getSource() == button_3) 
     { 
     //saveCommand.add("3"); 
     if(firstWrite) 
     { 
       text.setText(""+e.getActionCommand()); 
       firstWrite = false; 
     } 
     else 
       text.setText(text.getText()+e.getActionCommand()); 
     } 
     if(e.getSource() == button_4) 
     { 
     //saveCommand.add("4"); 
     if(firstWrite) 
     { 
       text.setText(""+e.getActionCommand()); 
       firstWrite = false; 
     } 
     else 
       text.setText(text.getText()+e.getActionCommand()); 
     } 
     if(e.getSource() == button_5) 
     { 
     //saveCommand.add("5"); 
     if(firstWrite) 
     { 
       text.setText(""+e.getActionCommand()); 
       firstWrite = false; 
     } 
     else 
       text.setText(text.getText()+e.getActionCommand()); 
     } 
     if(e.getSource() == button_6) 
     { 
     //saveCommand.add("6"); 
     if(firstWrite) 
     { 
       text.setText(""+e.getActionCommand()); 
       firstWrite = false; 
     } 
     else 
       text.setText(text.getText()+e.getActionCommand()); 
     } 
     if(e.getSource() == button_7) 
     { 
     //saveCommand.add("7"); 
     if(firstWrite) 
     { 
       firstWrite = false; 
       text.setText(""+e.getActionCommand()); 
     } 
     else 
       text.setText(text.getText()+e.getActionCommand()); 
     } 
     if(e.getSource() == button_8) 
     { 
     //saveCommand.add("8"); 
     if(firstWrite) 
     { 
       firstWrite = false; 
       text.setText(""+e.getActionCommand()); 
     } 
     else 
       text.setText(text.getText()+e.getActionCommand()); 
     } 
     if(e.getSource() == button_9) 
     { 
     //saveCommand.add("9"); 
     if(firstWrite) 
     { 
       firstWrite = false; 
       text.setText(""+e.getActionCommand()); 
     } 
     else 
       text.setText(text.getText()+e.getActionCommand()); 
     } 
     if(e.getSource() == button_jia) 
     { 
     //saveCommand.add("+"); 
   if(firstCalculate) 
   { 
   text.setText(text.getText()+e.getActionCommand()); 

   } 
   else 
   { 
   this.result (e); 
   text.setText(text.getText()+e.getActionCommand()); 
   } 
   firstWrite = false; 
   firstCalculate = false; 
     } 
     if(e.getSource() == button_jian) 
     { 
     //saveCommand.add("-"); 
   if(firstCalculate) 
   { 
   text.setText(text.getText()+e.getActionCommand()); 
   } 
   else 
   { 
   this.result (e); 
   text.setText(text.getText()+e.getActionCommand()); 
   } 
   firstWrite = false; 
   firstCalculate = false; 
     } 
     if(e.getSource() == button_cheng) 
     { 
     //saveCommand.add("*"); 
   if(firstCalculate) 
   { 
   text.setText(text.getText()+e.getActionCommand()); 
   } 
   else 
   { 
   this.result (e); 
   text.setText(text.getText()+e.getActionCommand()); 
   } 
   firstWrite = false; 
   firstCalculate = false; 
     } 
     if(e.getSource() == button_chu) 
     { 
     //saveCommand.add("/"); 
   if(firstCalculate) 
   { 
   text.setText(text.getText()+e.getActionCommand()); 

   } 
   else 
   { 
   this.result (e); 
   text.setText(text.getText()+e.getActionCommand()); 
   } 
   firstWrite = false; 
   firstCalculate = false; 
     } 

   } 
   public static void main(String arg[]) 
   { 
   new CalculatorFrame(); 
   } 

class WinClose implements WindowListener 
{ 
     public void windowClosing(WindowEvent e) 
     { 
       System.exit(0); 
     } 
   public void windowOpened(WindowEvent e){} 
   public void windowActivated(WindowEvent e){} 
   public void windowDeactivated(WindowEvent e){} 
   public void windowClosed(WindowEvent e){} 
   public void windowIconified(WindowEvent e){} 
   public void windowDeiconified(WindowEvent e){} 
   } 
   };
 

 

基于数据挖掘的音乐推荐系统设计与实现 需要一个代码说明,不需要论文 采用python语言,django框架,mysql数据库开发 编程环境:pycharm,mysql8.0 系统分为前台+后台模式开发 网站前台: 用户注册, 登录 搜索音乐,音乐欣赏(可以在线进行播放) 用户登陆时选择相关感兴趣的音乐风格 音乐收藏 音乐推荐算法:(重点) 本课题需要大量用户行为(如播放记录、收藏列表)、音乐特征(如音频特征、歌曲元数据)等数据 (1)根据用户之间相似性或关联性,给一个用户推荐与其相似或有关联的其他用户所感兴趣的音乐; (2)根据音乐之间的相似性或关联性,给一个用户推荐与其感兴趣的音乐相似或有关联的其他音乐。 基于用户的推荐和基于物品的推荐 其中基于用户的推荐是基于用户的相似度找出相似相似用户,然后向目标用户推荐其相似用户喜欢的东西(和你类似的人也喜欢**东西); 而基于物品的推荐是基于物品的相似度找出相似的物品做推荐(喜欢该音乐的人还喜欢了**音乐); 管理员 管理员信息管理 注册用户管理,审核 音乐爬虫(爬虫方式爬取网站音乐数据) 音乐信息管理(上传歌曲MP3,以便前台播放) 音乐收藏管理 用户 用户资料修改 我的音乐收藏 完整前后端源码,部署后可正常运行! 环境说明 开发语言:python后端 python版本:3.7 数据库:mysql 5.7+ 数据库工具:Navicat11+ 开发软件:pycharm
MPU6050是一款广泛应用在无人机、机器人和运动设备中的六轴姿态传感器,它集成了三轴陀螺仪和三轴加速度计。这款传感器能够实时监测并提供设备的角速度和线性加速度数据,对于理解物体的动态运动状态至关重要。在Arduino平台上,通过特定的库文件可以方便地与MPU6050进行通信,获取并解析传感器数据。 `MPU6050.cpp`和`MPU6050.h`是Arduino库的关键组成部分。`MPU6050.h`是头文件,包含了定义传感器接口和函数声明。它定义了类`MPU6050`,该类包含了初始化传感器、读取数据等方法。例如,`begin()`函数用于设置传感器的工作模式和I2C地址,`getAcceleration()`和`getGyroscope()`则分别用于获取加速度和角速度数据。 在Arduino项目中,首先需要包含`MPU6050.h`头文件,然后创建`MPU6050`对象,并调用`begin()`函数初始化传感器。之后,可以通过循环调用`getAcceleration()`和`getGyroscope()`来不断更新传感器读数。为了处理这些原始数据,通常还需要进行校准和滤波,以消除噪声和漂移。 I2C通信协议是MPU6050与Arduino交互的基础,它是一种低引脚数的串行通信协议,允许多个设备共享一对数据线。Arduino板上的Wire库提供了I2C通信的底层支持,使得用户无需深入了解通信细节,就能方便地与MPU6050交互。 MPU6050传感器的数据包括加速度(X、Y、Z轴)和角速度(同样为X、Y、Z轴)。加速度数据可以用来计算物体的静态位置和动态运动,而角速度数据则能反映物体转动的速度。结合这两个数据,可以进一步计算出物体的姿态(如角度和角速度变化)。 在嵌入式开发领域,特别是使用STM32微控制器时,也可以找到类似的库来驱动MPU6050。STM32通常具有更强大的处理能力和更多的GPIO口,可以实现更复杂的控制算法。然而,基本的传感器操作流程和数据处理原理与Arduino平台相似。 在实际应用中,除了基本的传感器读取,还可能涉及到温度补偿、低功耗模式设置、DMP(数字运动处理器)功能的利用等高级特性。DMP可以帮助处理传感器数据,实现更高级的运动估计,减轻主控制器的计算负担。 MPU6050是一个强大的六轴传感器,广泛应用于各种需要实时运动追踪的项目中。通过 Arduino 或 STM32 的库文件,开发者可以轻松地与传感器交互,获取并处理数据,实现各种创新应用。博客和其他开源资源是学习和解决问题的重要途径,通过这些资源,开发者可以获得关于MPU6050的详细信息和实践指南
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值