• 大小: 11KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-11-08
  • 语言: Java
  • 标签: java  编译原理  

资源简介

用java写的一个可一分析数学表达是正确与错误的程序。 而且最后还可以计算出你所输入的数学表达式的结果。

资源截图

代码片段和文件信息

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import book.string.*;

public class demon {
public static int[] te = new int[100];
public static int x = 0;
public static int flag = 0;
public static int flag1 = 0;

public static String[] ss = { “+“ “-“ “*“ “/“ “(“ “)“ };

public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
System.out.println(“此程序只会标出第一次出现错误的位置“);
File f = new File(“d:\\java1.txt“);
if (f.exists()) {
try {
FileReader fr = new FileReader(“d:\\java1.txt“);
BufferedReader br = new BufferedReader(fr);

String temp1 = “(3+4)8+((3+2)/3)#“;
while ((temp1 = br.readLine()) != null) {
System.out.println(“此数学表达式为:“ + temp1);
Pattern pt = Pattern
.compile(“\\p{Alnum}|-|\\+|\\(|\\)|#|\\*|/“);
// Pattern pt = Pattern.compile(“\\+“);
Matcher ma = pt.matcher(temp1);
// System.out.println(ma.groupCount());
while (ma.find()) {
if (ma.group(0).equals(“#“)) {
System.out.println(“已经识别结束“);
break;
}
if (match(ma.group(0))) {
te[x] = 0;
}
if (IsNumber(ma.group(0))) {
te[x] = 1;
}
if (ma.group(0).equals(“(“)) {
te[x] = 2;
flag = flag + 1;
}
if (ma.group(0).equals(“)“)) {
te[x] = 3;
flag1 = flag1 + 1;
}
// System.out.println(“ “+ma.group(0) + “ 类号为:“ +
// match(ma.group(0)));
// s[x] = new String();
x = x + 1;
}
// boolean []bl = new boolean[x];
// for (int i = 0; i < bl.length; i++) {
// bl[i] = true;
// }
boolean bl = true;
// te = new int [x];
// System.out.println(x);
// System.out.println(flag);
// System.out.println(flag1);
for (int i = 0; i < x; i++) {
if (flag != flag1) {
System.out.println(“此数学表达式不正确。“);
bl = false;
System.out.println(“错误的原意为左括号和右括号不能完全匹配“);
break;
}
if (te[0] != 1 && te[0] != 2) {
bl = false;
System.out.println(“ 错误出现在第“ + i+ “处“);
break;
} else {
if (i == x - 1) {
break;
}
if (te[i] == 1) {
if (te[i + 1] != 0 && te[i + 1] != 3) {
System.out.println(“此数学表达式不正确。“);
bl = false;
System.out.println(“ 错误出现在第“ + (i + 1)
+ “处“);
break;
}

}
if (te[i] == 0) {
if (te[i + 1] != 1 && te[i + 1] != 2) {
System.out.println(“此数学表达式不正确。“);
bl = false;
System.out.println(“ 错误出现在第“ + (i + 1)
+ “处“);
break;
}
}
if (te[i] == 2) {
if (te[i + 1] != 2 && te[i + 1] != 1) {
System.out.println(“此数学表达式不正确“);
bl = false;
System.out.println(“ 错误

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        289  2009-04-14 21:11  新建文件夹\demonTemp\.classpath

     文件        381  2009-04-11 19:21  新建文件夹\demonTemp\.project

     文件       4157  2009-04-16 16:49  新建文件夹\demonTemp\bin\demon.class

     文件       4142  2009-04-16 16:49  新建文件夹\demonTemp\src\demon.java

     文件        232  2009-04-14 19:02  新建文件夹\expressionParsser\.classpath

     文件        393  2009-04-14 19:02  新建文件夹\expressionParsser\.project

     文件       5687  2009-04-16 17:01  新建文件夹\expressionParsser\bin\book\string\expressionParser.class

     文件       6626  2009-04-16 17:01  新建文件夹\expressionParsser\src\book\string\expressionParser.java

     目录          0  2009-04-29 16:00  新建文件夹\expressionParsser\bin\book\string

     目录          0  2009-04-29 16:00  新建文件夹\expressionParsser\src\book\string

     目录          0  2009-04-29 16:00  新建文件夹\expressionParsser\bin\book

     目录          0  2009-04-29 16:00  新建文件夹\expressionParsser\src\book

     目录          0  2009-04-29 16:00  新建文件夹\demonTemp\bin

     目录          0  2009-04-29 16:00  新建文件夹\demonTemp\src

     目录          0  2009-04-29 16:00  新建文件夹\expressionParsser\bin

     目录          0  2009-04-29 16:00  新建文件夹\expressionParsser\src

     目录          0  2009-04-29 16:00  新建文件夹\demonTemp

     目录          0  2009-04-29 16:00  新建文件夹\expressionParsser

     目录          0  2009-04-29 16:00  新建文件夹

----------- ---------  ---------- -----  ----

                21907                    19


评论

共有 条评论