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

📄 tool.java

📁 用java语言实现了二十四点游戏的源代码
💻 JAVA
字号:
/*** <p>Title: </p>* <p>Description: </p>* <p>Copyright: Copyright (c) 2002</p>* <p>Company: </p>* @author LinYueyu* @version 1.0*/import java.util.*;import java.lang.*;public class tool {    public tool() {    }    private double cal(Object operator, double k, double l) {        if (operator.equals("+"))            l += k;        else if (operator.equals("-"))            l = l - k;        else if (operator.equals("*"))            l = l * k;        else if (operator.equals("/"))            l = l / k;        return l;    }    public double calculate(String fomular) {        double dResult = 0;        StringTokenizer strTok = new StringTokenizer(fomular, "+-*/()", true);        String strElement = new String();        Stack stOperator = new Stack();        Stack stNumber = new Stack();        Object stTop = new Object();        Object stCur = new Object();        int iTop, iCur, i, j;        double k, l;        Hashtable hsOperator = new Hashtable();        hsOperator.put("+", new Integer(1));        hsOperator.put("-", new Integer(1));        hsOperator.put("*", new Integer(2));        hsOperator.put("/", new Integer(2));        hsOperator.put("(", new Integer(3));        hsOperator.put(")", new Integer(0));        try {            while (strTok.hasMoreElements()) {                strElement = strTok.nextToken();                if ("+-*/()".indexOf(strElement) != -1) {                    if (!stOperator.isEmpty()) {                        stTop = stOperator.peek();                        i = ((Integer) (hsOperator.get(stTop))).intValue();                        j = ((Integer) (hsOperator.get(strElement))).intValue();                        if (j < i && i != 3) {                            k = Double.parseDouble((String) stNumber.pop());                            l = Double.parseDouble((String) stNumber.pop());                            stNumber.push(Double.toString(cal(stTop, k, l)));                            stOperator.pop();                            stOperator.push(strElement);                            if (j == 0) {                                stOperator.pop();                                stTop = stOperator.pop();                                while (!stTop.equals("(")) {                                    k =                                        Double.parseDouble(                                            (String) stNumber.pop());                                    l =                                        Double.parseDouble(                                            (String) stNumber.pop());                                    stNumber.push(                                        Double.toString(cal(stTop, k, l)));                                    stTop = stOperator.pop();                                }                            }                        } else {                            stOperator.push(strElement);                        }                    } else {                        stOperator.push(strElement);                    }                } else {                    stNumber.push(strElement);                }            }            while (!stOperator.isEmpty()) {                stTop = stOperator.pop();                k = Double.parseDouble((String) stNumber.pop());                l = Double.parseDouble((String) stNumber.pop());                stNumber.push(Double.toString(cal(stTop, k, l)));            }            while (!stNumber.isEmpty()) {                System.out.println(stNumber.pop());            }            if (!stOperator.isEmpty())                System.out.println("Fomular is Error!");        } catch (Exception e) {        }        return dResult;    }    public static void main(String[] args) {        tool tool1 = new tool();        String operator =            "35*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34";        operator            += "*3*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34";        operator            += "*3*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34";        operator            += "*3*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34";        operator            += "*3*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34";        operator            += "*3*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34";        operator            += "*3*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34";        operator            += "*3*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34";        operator            += "*3*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34";        operator            += "*3*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34";        operator            += "*3*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34";        operator            += "*3*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34";        operator            += "*3*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34";        operator            += "*3*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34";        operator            += "*3*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34";        operator            += "*3*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34";        operator            += "*3*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34";        operator            += "*3*32*12+18-32*(3/2+2)-15/32*2+23*23*23*3/234/2*34+23+3-2-42+35*34";        long start = new Date().getTime();        tool1.calculate(operator);        System.out.println(new Date().getTime() - start);    }}

⌨️ 快捷键说明

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