⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cal24.java

📁 java做的一个小程序
💻 JAVA
字号:
package cal24;

import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;

/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */

public class Cal24
    extends Applet {
  private boolean isStandalone = false;
  //JPanel jPanel1 = new JPanel();
  JPanel jPanel2 = new JPanel();
  BorderLayout borderLayout1 = new BorderLayout();
  JButton OK = new JButton();
  JButton Start = new JButton();
  JTextField jTextField1 = new JTextField();
  JLabel jLabel1 = new JLabel();
  int[] m_nStatus = new int[4];
  PicPanel pTop = new PicPanel(this);

  //Construct the applet
  public Cal24() {
  }

  //Initialize the applet
  public void init() {
    try {
      jbInit();
      for (int i = 0; i < 4; i++) {
        m_nStatus[i] = 0;
      }

    }
    catch (Exception e) {
      e.printStackTrace();
    }
  }

  //Component initialization
  private void jbInit() throws Exception {
    this.setLayout(borderLayout1);
    pTop.initImg();

    //add(pTop, BorderLayout.CENTER);

    OK.setText("确 定");
    OK.addActionListener(new Cal24_OK_actionAdapter(this));
    Start.setText("开始游戏");
    Start.addActionListener(new Cal24_Start_actionAdapter(this));
    jTextField1.setPreferredSize(new Dimension(57, 22));
    jTextField1.setText("");
    jTextField1.setColumns(15);
    jLabel1.setText("请输入表达式");
    this.add(pTop, BorderLayout.CENTER);
    this.add(jPanel2, BorderLayout.SOUTH);
    //jPanel1.add(pTop,null);
    jPanel2.add(Start, null);
    jPanel2.add(jLabel1, null);
    jPanel2.add(jTextField1, null);
    jPanel2.add(OK, null);
    this.setSize(400, 200);
    this.setLocation(300, 200);
    this.setVisible(true);
  }

  private boolean isNumber(String str) {
    if (str.equals("0") || str.equals("1") ||
        str.equals("2") || str.equals("3") ||
        str.equals("4") || str.equals("5") ||
        str.equals("6") || str.equals("7") ||
        str.equals("8") || str.equals("9")) {
      return true;
    }
    else {
      return false;
    }
  }

  private boolean isOperator(String str) {
    if (str.equals("+") || str.equals("-") ||
        str.equals("*") || str.equals("/")) {
      return true;
    }
    else {
      return false;
    }
  }

  public int calString(String str) {
    /**
      判断表达式的合法性
     **/

    int[] nums = new int[4];
    String[] ops = new String[4];
    for (int i = 0; i < 4; i++) {
      ops[i] = "";
    }

    String tempStr, s = "";
    int numNo = 0, opNo = 0;
    for (int i = 0; i < str.length(); i++) {
      tempStr = str.substring(i, i + 1);
      if (isNumber(tempStr)) {
        s += tempStr;
      }
      else if (isOperator(tempStr)) {
        if (numNo >= 4 || opNo >= 3) {
          return -1;
        }
        try {
          nums[numNo] = Integer.parseInt(s);
        }
        catch (Exception e) {
        }
        s = "";
        numNo++;
        ops[opNo] = tempStr;
        opNo++;
      }
      else {
        return -1;
      }
    }
    if (s.length() != 0 && numNo == 3) {
      try {
        nums[numNo] = Integer.parseInt(s);
      }
      catch (Exception e) {
        return -1;
      }
    }
    else {
      return -1;
    }
    /**
       判断表达式的数字就是扑克牌上的数字
     **/
    int tempStatus[] = new int[4];
    for (int i = 0; i < 4; i++) {
      tempStatus[i] = m_nStatus[i];
    }
    for (int i = 0; i < 4; i++) {
      int j = 0;
      boolean existed = false;
      while (j < 4 && !existed) {
        if (tempStatus[j] == nums[i]) {
          tempStatus[j] = -1;
          existed = true;
        }
        j++;
      }
      if (!existed) {
        return -1;
      }
    }
    /**
            计算表达式的值
     **/
    int result = nums[0];
    for (int i = 0; i < 3; i++) {
      if (ops[i].equals("+")) {
        result += nums[i + 1];
      }
      else if (ops[i].equals("-")) {
        result -= nums[i + 1];
      }
      else if (ops[i].equals("*")) {
        result *= nums[i + 1];
      }
      else if (ops[i].equals("/")) {
        result /= nums[i + 1];
      }
    }
    return result;
  }

  void Start_actionPerformed(ActionEvent e) {
    for (int i = 0; i < 4; i++) {
      m_nStatus[i] = (int) (Math.random() * 13) + 1;
    }
    pTop.repaint();

  }

  void OK_actionPerformed(ActionEvent e) {
    try {
      int result = calString(jTextField1.getText().trim());
      if (result == -1) {
        jTextField1.setText("");
        jTextField1.requestFocus();
        new Msg("你输入的表达式不合法,请重新输入!");
      }
      else {
        if (result != 24) {
          jTextField1.setText("");
          jTextField1.requestFocus();
          new Msg("你输入的表达式的值为" + result + ",请重新输入!");
        }
        else {
          if (result == 24) {
            jTextField1.requestFocus();
            new Msg("祝贺你,你的输入正确!");
            for (int i = 0; i < 4; i++) {
              m_nStatus[i] = (int) (Math.random() * 13) + 1;
            }
            pTop.repaint();
            jTextField1.setText("");
            jTextField1.requestFocus();
          }
        }
      }
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }

  }

}

class Cal24_Start_actionAdapter
    implements java.awt.event.ActionListener {
  Cal24 adaptee;

  Cal24_Start_actionAdapter(Cal24 adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {
    adaptee.Start_actionPerformed(e);
  }
}

class Cal24_OK_actionAdapter
    implements java.awt.event.ActionListener {
  Cal24 adaptee;

  Cal24_OK_actionAdapter(Cal24 adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {
    adaptee.OK_actionPerformed(e);
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -