£¨3£©³Ë·½È¡Óà·¨Á÷³Ì
Èý¡¢ÏµÍ³ÔËÐнá¹û£¨½ØÍ¼£©
1¡¢Ö÷²Ëµ¥
½«SÌí¼Óµ½showÎı¾¿ò Y Ö´Ðг˷½¡¢È¡Óà·¨ÔËËãµÃMun1ÊÇ·ñ´æÔÚ N ½«SÌí¼Óµ½showÎı¾¿ò
ËÄ¡¢¿Î³ÌÉè¼Æ×ܽá
ͨ¹ý´Ë´Î¿Î³ÌÉè¼Æ£¬Ê¹ÎÒ¸ü¼ÓÔúʵµÄÕÆÎÕÁËÓйØJAVAͼÐνçÃæ²¼¾ÖµÈ·½ÃæµÄ֪ʶ£¬ËäÈ»ÔÚÉè¼Æ¹ý³ÌÖÐÒ²Óöµ½Á˺ܶàÎÊÌ⣬µ«¾¹ýÒ»´ÎÓÖÒ»´ÎµÄ˼¿¼£¬Ò»±éÓÖÒ»±é¼ì²éºÍ·´¸´ÐÞ¸ÄÖÕÓÚÕÒµ½ÁËÔÒòËùÔÚ£¬Ò²±©Â¶ÁËǰÆÚÎÒÔÚÕâ·½ÃæµÄ֪ʶǷȱ¡£¿Î³ÌÉè¼ÆÊÇÒ»ÖÖʵ¼ù»î¶¯£¬²»µ«¿ÉÒÔÌáÉýרҵ֪ʶºÍרҵÄÜÁ¦£¬Ò²ÅàÑøÁËÎÒÃǶÀÁ¢Ë¼¿¼£¬¶¯ÊÖ²Ù×÷µÄÄÜÁ¦£¬Ê¹ÎÒ¶Ô³éÏóµÄ֪ʶÓÐÁ˾ßÌåµÄÈÏʶ¡£Õâ¶ÔÓÚÎÒÃǵĽ«À´Ò²ÓкܴóµÄ°ïÖú¡£´Ë´Î¿Î³ÌÉè¼ÆÒ²ÈÃÎÒÃ÷°×ûÓÐ×îÍêÉÆµÄ³ÌÐò´úÂ룬ֻÓв»¶ÏµØ¸ÄÉÆ²ÅÄÜʹ³ÌÐò±äµÃ¸üÍêÃÀ£¬Í¬Ê±Ò²ÔöÇ¿ÁËÎÒ¶ÔJAVAµÄÐËȤ£¬ÏàÐżÌÐø±£³ÖÏÂÈ¥¶ÔJAVAµÄÀí½âÒ»¶¨»á¸üÉÏÒ»²ãÂ¥¡£
¸½Â¼£º³ÌÐòÔ´Âë
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.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JSeparator; import javax.swing.JTextField;
public class Calculator extends JFrame implements ActionListener {
JMenuBar jmb; JMenu jm1,jm2,jm3; JMenuItem jmi;
/** ¼ÆËãÆ÷ÉϵļüµÄÏÔʾÃû×Ö */
private final String[] KEYS = { \, \, \, \, \, \, \, \,
\, \, \, \, \, \, \, \, \, \, \, \ }; /** ¼ÆËãÆ÷ÉϵŦÄܼüµÄÏÔʾÃû×Ö */
private final String[] COMMAND = { \, \, \ };
/** ¼ÆËãÆ÷ÉϼüµÄ°´Å¥ */
private JButton keys[] = new JButton[KEYS.length];
/** ¼ÆËãÆ÷ÉϵŦÄܼüµÄ°´Å¥ */
private JButton commands[] = new JButton[COMMAND.length]; /** ¼ÆËãÆ÷×ó±ßµÄMµÄ°´Å¥ */
/** ¼ÆËã½á¹ûÎı¾¿ò */
private JTextField resultText = new JTextField(\);
// ±êÖ¾Óû§°´µÄÊÇ·ñÊÇÕû¸ö±í´ïʽµÄµÚÒ»¸öÊý×Ö,»òÕßÊÇÔËËã·ûºóµÄµÚÒ»¸öÊý×Ö private boolean firstDigit = true; // ¼ÆËãµÄÖмä½á¹û¡£
private double resultNum = 0.0; // µ±Ç°ÔËËãµÄÔËËã·û
private String operator = \;
// ²Ù×÷ÊÇ·ñºÏ·¨
private boolean operateValidFlag = true; /** * ¹¹Ô캯Êý
*/
public Calculator() { super();
JMenuBar jmb=new JMenuBar();
this.setJMenuBar(jmb);
JMenu jm=new JMenu(\±à¼(E)\); jmb.add(jm);
jmi= new JMenuItem(\¸´ÖÆ(c) Ctrl+c\); jm.add(jmi);
jmi= new JMenuItem(\Õ³Ìù(p) Ctrl+v\); jm.add(jmi);
jm2=new JMenu(\²é¿´(v)\); jmb.add(jm2);
jmi= new JMenuItem(\±ê×¼ÐÍ(T)\); jm2.add(jmi);
jmi= new JMenuItem(\¿ÆÑ§ÐÍ(S)\); jm2.add(jmi);
jm2.add(new JSeparator());
jmi= new JMenuItem(\Êýѧ·Ö×é(I)\); jm2.add(jmi);
jm3=new JMenu(\°ïÖú(H)\); jmb.add(jm3);
jmi= new JMenuItem(\°ïÖúÖ÷Ìâ(H)\); jm3.add(jmi);
jm3.add(new JSeparator());
jmi= new JMenuItem(\¹ØÓÚ¼ÆËãÆ÷(A)\); jm3.add(jmi);
// ³õʼ»¯¼ÆËãÆ÷ init();
// ÉèÖüÆËãÆ÷µÄ±³¾°ÑÕÉ«
this.setBackground(Color.LIGHT_GRAY); this.setTitle(\¼ÆËãÆ÷\);
// ÔÚÆÁÄ»(500, 300)×ø±ê´¦ÏÔʾ¼ÆËãÆ÷ 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();
// ÓÃÍø¸ñ²¼¾ÖÆ÷£¬4ÐУ¬5ÁеÄÍø¸ñ£¬Íø¸ñÖ®¼äµÄˮƽ·½Ïò¼ä¸ôΪ3¸öÏóËØ£¬´¹Ö±·½Ïò¼ä¸ôΪ3¸öÏóËØ
calckeysPanel.setLayout(new GridLayout(4, 5, 3, 3)); for (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();
// ÓÃÍø¸ñ²¼¾ÖÆ÷£¬1ÐУ¬3ÁеÄÍø¸ñ£¬Íø¸ñÖ®¼äµÄˮƽ·½Ïò¼ä¸ôΪ3¸öÏóËØ£¬´¹Ö±·½Ïò¼ä¸ôΪ3¸öÏóËØ
commandsPanel.setLayout(new GridLayout(1, 3, 3, 3)); for (int i = 0; i < COMMAND.length; i++) { commands[i] = new JButton(COMMAND[i]); commandsPanel.add(commands[i]); commands[i].setForeground(Color.red); }
// ÏÂÃæ½øÐмÆËãÆ÷µÄÕûÌå²¼¾Ö£¬½«calckeysºÍcommandÃæ°å·ÅÔÚ¼ÆËãÆ÷µÄÖÐϲ¿
// н¨Ò»¸ö´óµÄÃæ°å£¬½«ÉÏÃæ½¨Á¢µÄcommandºÍcalckeysÃæ°å·ÅÔÚ¸ÃÃæ°åÄÚ JPanel panel1 = new JPanel();
// Ãæ°å²ÉÓñ߽粼¾Ö¹ÜÀíÆ÷£¬Ãæ°åÀï×é¼þÖ®¼äµÄˮƽºÍ´¹Ö±·½ÏòÉϼä¸ô¶¼Îª3ÏóËØ panel1.setLayout(new BorderLayout(3, 3));