(1) Fonctions principales : réaliser des opérations binoculaires simples telles que l'addition, la soustraction, la multiplication, la division, etc., et des opérations monoculaires telles que la racine carrée et le pourcentage #🎜 🎜#
(2) Fonction d'accessibilité : le bouton "C" permet d'effacer la zone de texte ; le bouton "←" réalise le retour arrière et supprime le caractère le plus à droite dans la zone de texte 2. Conception de l'interface # 🎜🎜#Ensuite, définissez le contenu du texte des 20 ; boutons : Instruction Et créez un tableau de type String pour stocker le contenu du texte sur les 20 boutons, déclarez et créez un tableau de type JButton (ou type Button) et utilisez une boucle for pour ajouter du texte aux 20 boutons en séquence.
Jetons d'abord un coup d'œil à l'effet final de l'interface :
3. Implémentation fonctionnelle
#🎜🎜 # Adoption Le « Modèle de traitement d'événements délégué » effectue un traitement d'événements en réponse aux opérations de l'utilisateur. Les principaux composants utilisés cette fois sont les boutons et les zones de texte, ils peuvent donc être classés comme classes ActionEvent. Utilisez l'interface d'écoute d'événements ActionListener pour implémenter la méthode actionPerformed pour répondre aux événements. Implémentation de la fonction de calcul : Faites attention aux différents traitements des opérateurs binaires et des opérateurs unaires. L'opérateur binaire définit une variable pour stocker la valeur du premier opérande et la valeur après l'opération binaire. Le résultat de l'opération est affiché dans la zone de texte en cliquant sur "=". Opérateur unaire, après avoir saisi la valeur, cliquez sur l'opérateur pour afficher le résultat de l'opération directement dans la zone de texte. La fonction racine carrée est implémentée en appelant la méthode sqrt() de la classe Math. L'opération de pourcentage peut être directement multipliée par 0,01, car par exemple, 12%=12*0,01+0,12, une méthode pour implémenter le calcul est spécialement définie. à cet effet. Une partie du code est la suivante :public void calculate(){ char[]arr=input.getText().toCharArray();//将输入的计算表达式字符串存储在字符数组中便于查找运算符的位置 int i=0;//移动标志变量 while('0'<=arr[i]&&arr[i]<='9'||arr[i]=='.')//去除数字与小数点以确定双目运算符的位置 i++; char operator=arr[i];//将该运算符存储起来 //双目运算 if(operator!='%'&&operator!='√'){ String s=input.getText(),s1,s2;//s1,s2分别存储运算符前后的数值字符串 s1=s.substring(0,i); s2=s.substring(i+1,s.length()); Double left=Double.parseDouble(s1);//将运算符左边的数值字符串转换为浮点数 Double right=Double.parseDouble(s2);//将运算符右边的数值字符串转换为浮点数 //根据不同的运算符进行相应的计算 if(operator=='+')result=left+right; else if(operator=='-')result=left-right; else if(operator=='×')result=left*right; else if(operator=='÷')result=left/right; } //单目运算 else{ String s=input.getText(),s1; s1=s.substring(0,s.length()-1); Double a=Double.parseDouble(s1); if(operator=='%'){ result=0.01*a; } else if(operator=='√'){ result=Math.sqrt(a); } } }
String str=input.getText(); if(str.length()>1){ str=str.substring(0,str.length()-1); input.setText(str); } else{ input.setText(""); }
import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.util.StringTokenizer; public class Calculator extends JFrame implements ActionListener{ JTextField input;//文本框,显示计算结果 JButton []button=new JButton[20];//按钮数组,存放20个按钮组件 JPanel pan=new JPanel(); String name[]={"C","÷", "×", "←","7", "8", "9", "-", "4", "5", "6", "+", "1", "2", "3", "√", "%", "0", ".", "="};//按钮标签数组 double result;//存储双目运算的结果 public Calculator(){ setTitle("模拟计算器—江海大"); pan.setLayout(new GridLayout(5,4));//设置面板pan的布局格式为5行4列的网格布局,存放20个按钮 input=new JTextField(20); input.setText(""); input.setFont(new Font("宋体",Font.BOLD,18)); input.setForeground(Color.BLUE); for(int i=0;i<button.length;i++){ button[i]=new JButton(name[i]); button[i].setFont(new Font("黑体",Font.BOLD,20)); button[i].addActionListener(this);//给每一个按钮注册事件监听器 pan.add(button[i]); } add(input,BorderLayout.NORTH); add(pan,BorderLayout.CENTER); setSize(600,400); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗体 } //动作响应 public void actionPerformed(ActionEvent e){ //如果点击按钮 "C"则触发清空文本框的操作 if(e.getSource()==button[0]){ input.setText(""); } //如果点击按钮"="则调用计算方法并在文本框显示结果 else if(e.getSource()==button[19]){ calculate(); input.setText(""+result);//输出计算结果 } //如果点击"<--"按钮则删去文本框内字符串的末尾字符 else if(e.getSource()==button[3]){ String str=input.getText(); if(str.length()>1){ str=str.substring(0,str.length()-1); input.setText(str); } else{ input.setText(""); } } //以字符串拼接的方式将点击的按钮的标签拼接起来,成为一个运算表达式字符串 else{ input.setText(input.getText()+e.getActionCommand()); } } public void calculate(){ char[]arr=input.getText().toCharArray();//将输入的计算表达式字符串存储在字符数组中便于查找运算符的位置 int i=0;//移动标志变量 while('0'<=arr[i]&&arr[i]<='9'||arr[i]=='.')//去除数字与小数点以确定双目运算符的位置 i++; char operator=arr[i];//将该运算符存储起来 //双目运算 if(operator!='%'&&operator!='√'){ String s=input.getText(),s1,s2;//s1,s2分别存储运算符前后的数值字符串 s1=s.substring(0,i); s2=s.substring(i+1,s.length()); Double left=Double.parseDouble(s1);//将运算符左边的数值字符串转换为浮点数 Double right=Double.parseDouble(s2);//将运算符右边的数值字符串转换为浮点数 //根据不同的运算符进行相应的计算 if(operator=='+')result=left+right; else if(operator=='-')result=left-right; else if(operator=='×')result=left*right; else if(operator=='÷')result=left/right; } //单目运算 else{ String s=input.getText(),s1; s1=s.substring(0,s.length()-1); Double a=Double.parseDouble(s1); if(operator=='%'){ result=0.01*a; } else if(operator=='√'){ result=Math.sqrt(a); } } } public static void main(String[]args){ new Calculator(); } }
Ajout
Soustraction
Multiplication#🎜 🎜 ##🎜 🎜 #
Division
racine carrée
#🎜 🎜##🎜 🎜#clear
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!