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

📄 expressionrandom.java

📁 1.用堆栈实现表达式求值 2.随机生成带括号的表达式
💻 JAVA
字号:
/**
 * 
 */
package sasa.service;

import java.util.Random;

/**
 * @author sasa
 * 
 * @version 1.0 2007-4-22 下午12:15:02
 */
public class ExpressionRandom {

	private Random ran;

	public ExpressionRandom() {
		ran = new Random();
	}

	// 返回一个长度为n的整型数组,数组元素随机且范围在1~m
	public int[] randomInt(int m, int n) {
		int[] a = new int[n];
		for (int i = 0; i < n; i++) {
			a[i] = ran.nextInt(m);
			if (a[i] == 0)
				a[i] += 1;
			// System.out.println("a[" + i + "]=" + a[i] );
		}
		return a;
	}

	// 从原字符串数组中返回一个各元素随机的数组
	public String[] randomChar(String[] ch) {
		String[] ch1 = new String[ch.length];
		for (int i = 0; i < ch.length; i++)
			ch1[i] = ch[ran.nextInt(ch.length)];
		return ch1;
	}

	// 返回一个简单的随机算术表达式
	/*
	 * 设每个表达式都有两对括号,利用栈求值时会匹配消失
	 * 
	 * 四个数一共五种排列方式
	 * 1. ((a@b)@c)@d
	 * 
	 * 2. (a@(b@c))@d)
	 * 
	 * 3. a@((b@c)@d)
	 * 
	 * 4. a@(b@(c@d))
	 * 
	 * 5. (a@b)@(c@d)
	 */

	public String randomString(int m) {
		int n = 4;
		String[] ch1 = { "+", "-", "*", "/" };
		String[] ch = randomChar(ch1);
		int[] a = randomInt(m, n);
		String[] src = new String[5];
		src[0] = "((" + a[0] + ch[0] + a[1] + ")" + ch[1] + a[2] + ")" + ch[2]
				+ a[3];
		src[1] = "(" + a[0] + ch[0] + "(" + a[1] + ch[1] + a[2] + "))" + ch[2]
				+ a[3];
		src[2] = a[0] + ch[0] + "((" + a[1] + ch[1] + a[2] + ")" + ch[2] + a[3]
				+ ")";
		src[3] = a[0] + ch[0] + "(" + a[1] + ch[1] + "(" + a[2] + ch[2] + a[3]
				+ "))";
		src[4] = "(" + a[0] + ch[0] + a[1] + ")" + ch[1] + "(" + a[2] + ch[2]
				+ a[3] + ")";
		return src[ran.nextInt(5)];
	}
}

⌨️ 快捷键说明

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