Maison Java javaDidacticiel Programmation d'une calculatrice simple Java

Programmation d'une calculatrice simple Java

Jan 20, 2017 pm 05:01 PM

Écrivez une application qui simule une calculatrice, en utilisant une disposition en panneaux et en grille, en ajoutant une zone de texte, 10 boutons numériques (0 ~ 9), 4 boutons d'addition, de soustraction, de multiplication et de division, un bouton de signe égal et un bouton d'effacement. . Un bouton racine carrée et un bouton retour arrière nécessitent que la formule de calcul et les résultats soient affichés dans la zone de texte. L'effet est comme indiqué dans la figure ci-dessous.

Code de la calculatrice simple Java :

import javax.swing.*; 
import javax.swing.JTextField; 
import java.awt.*; 
import java.awt.event.*; 
import java.lang.*; 
import java.awt.Color; 
  
  
public class Ex5_2 extends JFrame implements ActionListener 
{ 
  private JPanel p1 = new JPanel(); //创建面板 
  private JPanel p2 = new JPanel(); 
  private JTextField t1;   //文本框1用来显示输入信息 
  private JTextField t2;   //文本框2用来显示结果信息 
  private JLabel label;    //标签信息 
  StringBuffer str;      //显示屏所显示的字符串  
  double x,y;         //x和y都是运算数  
  int z;           //Z表示单击了那一个运算符.0表示"+",1表示"-",2表示"*",3表示"/"      
  private JButton b[] = new JButton[12]; //创建一个有12个按钮的数组 
  private JButton b1,b2,b3,b4,b5,b6,b7,b8; //算术功能按钮 
  
  
  public Ex5_2() 
  { 
    super("简易计算器");   //窗口名称 
    Container c = getContentPane(); //创建内容面板对象 
  
    t1 = new JTextField(30); 
    t1.setEditable(false); //只能显示,不能编辑 
    t2 = new JTextField(30); 
    t2.setEditable(false); //只能显示,不能编辑 
    label = new JLabel("欢迎使用小巫版计算器^_^o~ 努力!"); 
    label.setForeground(Color.blue); 
  
    //创建一个空字符串缓冲区  
    str=new StringBuffer();  
  
    p2.add(label); //添加标签到面板 
    p2.add(t2);   //添加文本框到面板 
    p2.add(t1);   //添加文本框到面板 
    p2.setLayout(new GridLayout(4,1)); //把面扳布局为4行1列 
  
    for(int i=0;i<10;i++)  //分别为数组中0~9号的按钮设置标签,并注册监听器 
    { 
      String s=""+i; 
      b[i]= new JButton(s);   
      b[i].addActionListener(this);   
    } 
      
    //实例化各个按钮 
    b[10]= new JButton("-/+"); b[11]= new JButton("."); 
    b1= new JButton("/");    b2= new JButton("Back"); 
    b3= new JButton("*");    b4= new JButton("C"); 
    b5= new JButton("+");    b6= new JButton("Sqrt"); 
    b7= new JButton("-");    b8= new JButton("="); 
      
    //设置按钮前景色 
    for(int i=0;i<12;i++) 
    { 
      b[i].setForeground(Color.blue); 
    } 
  
    b1.setForeground(Color.red);  b3.setForeground(Color.red); 
    b5.setForeground(Color.red);  b7.setForeground(Color.red); 
    b2.setForeground(Color.blue);  b4.setForeground(Color.blue); 
    b6.setForeground(Color.red);   b8.setForeground(Color.blue); 
  
      
    //添加到面板 
    p1.add(b[7]); p1.add(b[8]); p1.add(b[9]); p1.add(b1); p1.add(b2); 
    p1.add(b[4]); p1.add(b[5]); p1.add(b[6]); p1.add(b3); p1.add(b4); 
    p1.add(b[1]); p1.add(b[2]); p1.add(b[3]); p1.add(b5); p1.add(b6); 
    p1.add(b[0]); p1.add(b[10]); p1.add(b[11]);p1.add(b7);p1.add(b8); 
    p1.setLayout(new GridLayout(4,5,5,5)); 
  
      
    //注册监听器 
    b[10].addActionListener(this); b[11].addActionListener(this); 
    b1.addActionListener(this); b2.addActionListener(this); 
    b3.addActionListener(this); b4.addActionListener(this); 
    b5.addActionListener(this); b6.addActionListener(this); 
    b7.addActionListener(this); b8.addActionListener(this); 
    
    //将面板添加到内容面板 
    c.add(p2); 
    c.add(p1); 
    c.setLayout(new FlowLayout()); //设置为顺序布局 
      
      
      
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置窗口关闭动作 
    setVisible(true);  //设置为可见 
    setResizable(false); //禁止调整框架大小 
    setSize(400,300);  //设置窗口大小 
  
  } 
  
    
  //主方法实现创建一个窗口 
  public static void main(String[] args) 
  { Ex5_2 f = new Ex5_2(); } 
  
    
  //按钮的事件处理 
  public void actionPerformed(ActionEvent e) 
  { 
  try
  { 
    if(e.getSource()==b4)  //选择"C"清零 
    { 
      t1.setText("0"); //把文本框清零 
      t1.setHorizontalAlignment(JTextField.RIGHT);  //文本对齐右边 
      str.setLength(0); //清空字符串缓冲区以准备接收新的输入运算数 
    } 
    else if(e.getSource()==b[10])//单击"+/-"选择输入的运算数是正数还是负数  
    { 
      x=Double.parseDouble(t1.getText().trim());//trim函数作用是去掉字符串中的空格 
      t1.setText(""+(-x)); 
      t1.setHorizontalAlignment(JTextField.RIGHT); 
    } 
    else if (e.getSource()==b5)//单击加号按钮获得x的值和z的值并清空y的值 
    { 
      x=Double.parseDouble(t1.getText().trim()); 
      str.setLength(0); 
      y=0d; 
      z=0; 
    } 
    else if(e.getSource()==b7)//单击减号按钮获得x的值和z的值并清空y的值  
    { 
      x=Double.parseDouble(t1.getText().trim()); 
      str.setLength(0); 
      y=0d; 
      z=1; 
    } 
    else if(e.getSource()==b3)//单击乘号按钮获得x的值和z的值并清空y的值  
    { 
      x=Double.parseDouble(t1.getText().trim()); 
      str.setLength(0); 
      y=0d; 
      z=2; 
    } 
    else if(e.getSource()==b1)//单击除号按钮获得x的值和z的值并清空y的值  
    { 
      x=Double.parseDouble(t1.getText().trim()); 
      str.setLength(0); 
      y=0d; 
      z=3; 
    } 
    else if(e.getSource()==b8)//单击等号按钮输出计算结果  
    { 
      str.setLength(0); 
      switch(z) 
      { 
        case 0: t1.setText(""+(x+y)); t1.setHorizontalAlignment(JTextField.RIGHT);break; 
        case 1: t1.setText(""+(x-y)); t1.setHorizontalAlignment(JTextField.RIGHT);break; 
        case 2: t1.setText(""+(x*y)); t1.setHorizontalAlignment(JTextField.RIGHT);break; 
        case 3: t1.setText(""+(x/y)); t1.setHorizontalAlignment(JTextField.RIGHT);break; 
      } 
    } 
    else if(e.getSource()==b[11])//单击"."按钮输入小数  
    { 
      if(t1.getText().trim().indexOf(&#39;.&#39;)!=-1)//判断字符串中是否已经包含了小数点 
      { 
      } 
      else //如果没有小数点 
      { 
        if(t1.getText().trim().equals("0"))//如果初时显示为0  
        { 
          t1.setText(str.append(e.getActionCommand()).toString()); 
          t1.setHorizontalAlignment(JTextField.RIGHT); 
        } 
        else if(t1.getText().trim().equals(""))//如果初时显示为空则不做任何操作 
        {} 
        else 
        {  
          t1.setText(str.append(e.getActionCommand()).toString());  
          t1.setHorizontalAlignment(JTextField.RIGHT); 
        } 
  
      } 
    y=0d; 
    } 
  
    else if(e.getSource()==b6) //求平方根  
    { 
      x=Double.parseDouble(t1.getText().trim());  
      if(x<0) 
      { 
        t1.setText("数字格式异常"); 
        t1.setHorizontalAlignment(JTextField.RIGHT); 
      } 
      else
      { 
        t1.setText(""+Math.sqrt(x)); 
        t1.setHorizontalAlignment(JTextField.RIGHT); 
      } 
      str.setLength(0); 
      y=0d; 
    } 
  
    else
    { 
      if(e.getSource()==b[0])//如果选择的是"0"这个数字键  
      { 
        if(t1.getText().trim().equals("0"))//如果显示屏显示的为零不做操作  
        {} 
        else
          t1.setText(str.append(e.getActionCommand()).toString()); 
          t1.setHorizontalAlignment(JTextField.RIGHT); 
          y=Double.parseDouble(t1.getText().trim());  
      } 
      else if (e.getSource()==b2) //选择的是back键 
      { 
        if(!t1.getText().trim().equals("0"))//如果显示屏显示的不是零  
        { 
        if(str.length()!=1)  
        {  
          t1.setText(str.delete(str.length()-1,str.length()).toString());//可能抛出字符串越界异常  
          t1.setHorizontalAlignment(JTextField.RIGHT); 
        } 
        else 
        {  
          t1.setText("0"); t1.setHorizontalAlignment(JTextField.RIGHT); 
          str.setLength(0);  
        }  
      }  
      y=Double.parseDouble(t1.getText().trim());  
      } 
      else 
        { 
        t1.setText(str.append(e.getActionCommand()).toString());  
        t1.setHorizontalAlignment(JTextField.RIGHT); 
        y=Double.parseDouble(t1.getText().trim()); 
        } 
      } 
    } 
    catch(NumberFormatException e1){ t1.setText("数字格式异常"); 
    t1.setHorizontalAlignment(JTextField.RIGHT); }  
  
    catch(StringIndexOutOfBoundsException e1){t1.setText("字符串索引越界"); 
    t1.setHorizontalAlignment(JTextField.RIGHT);}  
  } 
}
Copier après la connexion

Rendu en cours d'exécution :

Programmation dune calculatrice simple Java

Ceci termine la conception d'un programme de calculatrice simple Java, je J'espère que cet article pourra vous inspirer pour écrire une calculatrice. Il ne s'agit que d'une simple calculatrice et vous pouvez continuer à l'utiliser pour améliorer les fonctions de la calculatrice.

Pour plus d'articles liés à la programmation de calculatrice simple Java, veuillez faire attention au site Web PHP chinois !

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Le logiciel de sécurité de l'entreprise entraîne-t-il l'exécution de l'application? Comment dépanner et le résoudre? Le logiciel de sécurité de l'entreprise entraîne-t-il l'exécution de l'application? Comment dépanner et le résoudre? Apr 19, 2025 pm 04:51 PM

Dépannage et solutions au logiciel de sécurité de l'entreprise qui fait que certaines applications ne fonctionnent pas correctement. De nombreuses entreprises déploieront des logiciels de sécurité afin d'assurer la sécurité des réseaux internes. ...

Comment obtenir élégamment des noms de variables de classe d'entité pour créer des conditions de requête de base de données? Comment obtenir élégamment des noms de variables de classe d'entité pour créer des conditions de requête de base de données? Apr 19, 2025 pm 11:42 PM

Lorsque vous utilisez MyBatis-Plus ou d'autres cadres ORM pour les opérations de base de données, il est souvent nécessaire de construire des conditions de requête en fonction du nom d'attribut de la classe d'entité. Si vous manuellement à chaque fois ...

Comment simplifier les problèmes de cartographie des champs dans l'amarrage du système à l'aide de mapstruct? Comment simplifier les problèmes de cartographie des champs dans l'amarrage du système à l'aide de mapstruct? Apr 19, 2025 pm 06:21 PM

Le traitement de la cartographie des champs dans l'amarrage du système rencontre souvent un problème difficile lors de l'exécution d'amarrage du système: comment cartographier efficacement les champs d'interface du système a ...

Comment Intellij Idea identifie-t-elle le numéro de port d'un projet de démarrage de printemps sans publier un journal? Comment Intellij Idea identifie-t-elle le numéro de port d'un projet de démarrage de printemps sans publier un journal? Apr 19, 2025 pm 11:45 PM

Commencez le printemps à l'aide de la version IntelliJideaultimate ...

Comment convertir les noms en nombres pour implémenter le tri et maintenir la cohérence en groupes? Comment convertir les noms en nombres pour implémenter le tri et maintenir la cohérence en groupes? Apr 19, 2025 pm 11:30 PM

Solutions pour convertir les noms en nombres pour implémenter le tri dans de nombreux scénarios d'applications, les utilisateurs peuvent avoir besoin de trier en groupe, en particulier en un ...

Comment convertir en toute sécurité les objets Java en tableaux? Comment convertir en toute sécurité les objets Java en tableaux? Apr 19, 2025 pm 11:33 PM

Conversion des objets et des tableaux Java: Discussion approfondie des risques et des méthodes correctes de la conversion de type de distribution De nombreux débutants Java rencontreront la conversion d'un objet en un tableau ...

Comment obtenir élégamment les conditions de requête de création de nom de variable de classe d'entité lors de l'utilisation de tkmybatis pour la requête de base de données? Comment obtenir élégamment les conditions de requête de création de nom de variable de classe d'entité lors de l'utilisation de tkmybatis pour la requête de base de données? Apr 19, 2025 pm 09:51 PM

Lorsque vous utilisez TkMyBatis pour les requêtes de base de données, comment obtenir gracieusement les noms de variables de classe d'entité pour créer des conditions de requête est un problème courant. Cet article épinglera ...

Comment utiliser la solution Redis Cache pour réaliser efficacement les exigences de la liste de classement des produits? Comment utiliser la solution Redis Cache pour réaliser efficacement les exigences de la liste de classement des produits? Apr 19, 2025 pm 11:36 PM

Comment la solution de mise en cache Redis réalise-t-elle les exigences de la liste de classement des produits? Pendant le processus de développement, nous devons souvent faire face aux exigences des classements, comme l'affichage d'un ...

See all articles