English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
هذا المثال يشرح كيفية تنفيذ وظيفة الحاسبة باستخدام لغة Java. نتشارك هذا معكم للاستفادة منه، وفقًا للتفاصيل التالية:
package awtDemo; import java.awt.BorderLayout; import java.awt.Color; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; @SuppressWarnings("serial") public class Calculator extends JFrame implements ActionListener { private final String[] KEYS = { "7", "8", "9", "/", "sqrt", "4", "5", "6", "*", "%", "1", "2", "3", "-", "1/x", "0", "+/-", ".", "+", "=" }; private final String[] COMMAND = { "Backspace", "CE", "C" }; private JButton keys[] = new JButton[KEYS.length]; private JButton commands[] = new JButton[COMMAND.length]; private JTextField resultText = new JTextField("0"); private boolean firstDigit = true; private double resultNum = 0.0; private String operator = "="; private boolean operateValidFlag = true; public Calculator() { init(); this.setBackground(Color.LIGHT_GRAY); this.setTitle("ar.oldtoolbag.com - حاسبة"); this.setLocation(500, 300); this.setResizable(false); this.pack(); } private void init() { resultText.setHorizontalAlignment(JTextField.RIGHT); resultText.setEditable(false); resultText.setBackground(Color.white); JPanel calckeysPanel = new JPanel(); calckeysPanel.setLayout(new GridLayout(4, 5, 3, 3)); للمقارنة (int i = 0; i < KEYS.length; i++) { keys[i] = new JButton(KEYS[i]); calckeysPanel.add(keys[i]); keys[i].setForeground(Color.blue); } keys[3].setForeground(Color.red); keys[8].setForeground(Color.red); keys[13].setForeground(Color.red); keys[18].setForeground(Color.red); keys[19].setForeground(Color.red); JPanel commandsPanel = new JPanel(); commandsPanel.setLayout(new GridLayout(1, 3, 3, 3)); للمقارنة (int i = 0; i < COMMAND.length; i++) { commands[i] = new JButton(COMMAND[i]); commandsPanel.add(commands[i]); commands[i].setForeground(Color.red); } JPanel panel1 = new JPanel(); panel1.setLayout(new BorderLayout(3, 3)); panel1.add("North", commandsPanel); panel1.add("West", calckeysPanel); JPanel top = new JPanel(); top.setLayout(new BorderLayout()); top.add("Center", resultText); getContentPane().setLayout(new BorderLayout(3, 5)); getContentPane().add("North", top); getContentPane().add("Center", panel1); للمقارنة (int i = 0; i < KEYS.length; i++) { keys[i].addActionListener(this); } للمقارنة (int i = 0; i < COMMAND.length; i++) { commands[i].addActionListener(this); } } public void actionPerformed(ActionEvent e) { String label = e.getActionCommand(); إذا (label.equals(COMMAND[0])) { } else if (label.equals(COMMAND[1])) { } resultText.setText("0"); } else if (label.equals(COMMAND[2])) { handleC(); } else if ("0123456789.".indexOf(label) >= 0) { handleNumber(label); } else { handleOperator(label); } } private void handleBackspace() { String text = resultText.getText(); int i = text.length(); if (i > 0) { text = text.substring(0, i - 1); if (text.length() == 0) { resultText.setText("0"); firstDigit = true; operator = "="; } else { resultText.setText(text); } } } private void handleNumber(String key) { if (firstDigit) { resultText.setText(key); } else if ((key.equals(".")) && (resultText.getText().indexOf(".") < 0)) { resultText.setText(resultText.getText() + "."); } else if (!key.equals(".")) { resultText.setText(resultText.getText() + key); } firstDigit = false; } private void handleC() { resultText.setText("0"); firstDigit = true; operator = "="; } private void handleOperator(String key) { if (operator.equals("/")) { if (getNumberFromText() == 0.0) { operateValidFlag = false; resultText.setText("除数不能为零"); } else { resultNum /= getNumberFromText(); } } else if (operator.equals("1/x")) { if (resultNum == 0.0) { operateValidFlag = false; resultText.setText("لا يوجد معكوس للاصف الصفر"); } else { resultNum = 1 / resultNum; } } else if (operator.equals("+")) { resultNum += getNumberFromText(); } else if (operator.equals("-")) { resultNum -= getNumberFromText(); } else if (operator.equals("*")) { resultNum *= getNumberFromText(); } else if (operator.equals("sqrt")) { resultNum = Math.sqrt(resultNum); } else if (operator.equals("%")) { resultNum = resultNum / 100; } else if (operator.equals("+/-")) { resultNum = resultNum * (-1); } else if (operator.equals("=")]) { resultNum = getNumberFromText(); } if (operateValidFlag) { long t1; double t2; t1 = (long) resultNum; t2 = resultNum - t1; if (t2 == 0) { resultText.setText(String.valueOf(t1)); } else { resultText.setText(String.valueOf(resultNum)); } } operator = key; firstDigit = true; operateValidFlag = true; } private double getNumberFromText() { double result = 0; try { result = Double.valueOf(resultText.getText()).doubleValue(); } catch (NumberFormatException e) { } return result; } public static void main(String args[]) { Calculator calculator1 = new Calculator(); calculator1.setVisible(true); calculator1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
تأثير التشغيل:
النص التوضيحي: هنا أقدم لكم بعض الأدوات الحسابية لتكونوا قد استفدتم منها:
أداة حساب عبر الإنترنت لحل المعادلات العشوائية (المعادلات):
http://tools.jb51.net/jisuanqi/equ_jisuanqi
استخدام حاسبة حساب علمي عبر الإنترنت_حاسبة متقدمة عبر الإنترنت لحساب:
http://tools.jb51.net/jisuanqi/jsqkexue
حاسبة عبر الإنترنت_حاسبة معيارية:
http://tools.jb51.net/jisuanqi/jsq
يمكن للمستخدمين المهتمين بمعرفة المزيد عن خوارزميات Java أن يروا المقالات الخاصة بالموقع: 'تعليم بنية البيانات وجداول الأعمدة لـ Java'، 'ملخص تقنيات تعامل DOM لـ Java'، 'تجميع تقنيات التعامل مع الملفات والدلائل لـ Java'، و 'تجميع تقنيات التعامل مع التخزين المؤقت لـ Java'.
آمل أن يساعدكم ما ذكرته في هذا المقال في تصميم برامج Java.
البيان: محتويات هذا المقال تم جمعها من الإنترنت، ويحق للمالك الأصلي الحصول عليها، ويتم جمعها من قبل المستخدمين عبر الإنترنت بشكل متعاوني وتحميلها بشكل مستقل، ويملك هذا الموقع حقوق الملكية، ويتم تعديل المحتويات بشكل إنساني، ولا يتحمل هذا الموقع أي مسؤولية قانونية ذات صلة. إذا اكتشفتم محتوى مخالف للحقوق الملكية، يرجى إرسال بريد إلكتروني إلى: notice#oldtoolbag.com (عند إرسال البريد الإلكتروني، يرجى استبدال #بـ @) لتقديم الشكوى، وقدموا الدليل على الشكوى، وإذا تم التحقق من ذلك، سيتم حذف المحتوى المزعوم فورًا.