(1) Hauptfunktionen: einfache binokulare Operationen wie Addition, Subtraktion, Multiplikation und Division sowie monokulare Operationen wie Quadratwurzel und Prozentsatz realisieren
(2) Hilfsfunktionen: per Knopfdruck realisieren. C" Löschen Sie das Textfeld. Die Schaltfläche „←“ implementiert die Rücktaste und löscht das Zeichen ganz rechts im Textfeld Zeilen und 4 Spalten bieten Platz für 20 Tasten. Das Textfeld und das Bedienfeld, das 20 Schaltflächenkomponenten enthält, verwenden die Rahmenlayoutmethode, um sie in der Form BorderLayout.NORTH bzw. der zentralen Position BorderLayout.CENTER anzuordnen.
Werfen wir zunächst einen Blick auf den endgültigen Schnittstelleneffekt:
3. FunktionsimplementierungVerwenden des „Delegierten-Ereignisverarbeitungsmodells“ für die Ereignisverarbeitung, um auf Benutzervorgänge zu reagieren. Die Hauptkomponenten, die dieses Mal verwendet werden, sind Schaltflächen und Textfelder, sodass sie als ActionEvent-Klassen klassifiziert werden können. Verwenden Sie die ActionListener-Ereignis-Listener-Schnittstelle, um die actionPerformed-Methode zu implementieren, um auf Ereignisse zu reagieren.
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); } } }
Codeidee: Nehmen Sie den Operationsausdruck 8+5 als Beispiel. Rufen Sie zunächst die vom Benutzer über die Schaltflächenkomponente eingegebene Berechnungsausdruckszeichenfolge „8 + 5“ aus der Textfeldeingabe ab und konvertieren Sie sie zunächst in ein Zeichenarray. Wenn es sich um eine binäre Operation handelt, ermitteln Sie zunächst die Position des Operators über eine Schleife , und verwenden Sie dann StringTokenizer Die Zeichensegmentierungs- und Bearbeitungsmethode substring(a,b) in der Klasse erhält die Zeichenfolge, deren Index bei a beginnt und mit b-1 endet (links geschlossenes und rechts offenes Intervall), und verwendet den Operator as Die Trennlinie zum Teilen der beiden Zeichen wird getrennt, dh die beiden Zeichen „8“ und „5“ werden erhalten, und dann wird die Methode Double.parseDouble() verwendet, um sie in Gleitkommazahlen umzuwandeln Zahlen 8,0 und 5,0, die schließlich je nach Operation bearbeitet werden können. Der Operator führt entsprechende Berechnungen durch und speichert das Ergebnis in der Variablen result. Der unäre Operator ist derselbe, außer dass es nach der Aufteilung nur einen linken Operanden und keinen rechten Operanden gibt.
Die Implementierung der Schaltfläche „C“ zum Löschen des Textfelds: Rufen Sie die Member-Methode setText(““) des Textfeldobjekts auf und setzen Sie sie auf eine leere Zeichenfolge zurück.
Die Implementierung der Schaltfläche „←“: Zuerst abrufen Geben Sie die Textfeldzeichenfolge in die Zeichenfolge ein, rufen Sie dann die Mitgliedsmethode substring () auf, um die verbleibende Teilzeichenfolge mit Ausnahme des letzten Zeichens abzurufen, und legen Sie schließlich die Zeichenfolge als Inhalt des Textfeldobjekts fest. Ein Teil des Codes lautet wie folgt:
String str=input.getText(); if(str.length()>1){ str=str.substring(0,str.length()-1); input.setText(str); } else{ input.setText(""); }
4. Alle Codes
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(); } }
5. Funktionstest
Addition Subtraktion MultiplikationAbteilung
Quadratwurzel
Klar
Das obige ist der detaillierte Inhalt vonSo implementieren Sie einen kleinen Taschenrechner mithilfe der Entwicklung einer grafischen Java-GUI-Schnittstelle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!