java数学表达式_JAVA数据结构--解析数学表达式

1 //brackets.java2 //stacks used to check matching brackets3 //to run this program: C>java bracketsApp

4 import java.io.*; //for I/O

5 6 classStackX7 {8 private intmaxSize;9 private char[] stackArray;10 private inttop;11 //--------------------------------------------------------------

12 public StackX(int s) //constructor

13 {14 maxSize =s;15 stackArray = new char[maxSize];16 top = -1;17 }18 //--------------------------------------------------------------

19 public void push(char j) //put item on top of stack

20 {21 stackArray[++top] =j;22 }23 //--------------------------------------------------------------

24 public char pop() //take item from top of stack

25 {26 return stackArray[top--];27 }28 //--------------------------------------------------------------

29 public char peek() //peek at top of stack

30 {31 returnstackArray[top];32 }33 //--------------------------------------------------------------

34 public boolean isEmpty() //true if stack is empty

35 {36 return (top == -1);37 }38 //--------------------------------------------------------------

39 } //end class StackX

40 41 classBracketChecker42 {43 private String input; //input string44 //--------------------------------------------------------------

45 public BracketChecker(String in) //constructor

46 { input =in; }47 //--------------------------------------------------------------

48 public voidcheck()49 {50 int stackSize = input.length(); //get max stack size

51 StackX theStack = new StackX(stackSize); //make stack

52

53 for(int j=0; j

54 {55 char ch = input.charAt(j); //get char

56 switch(ch)57 {58 case '{': //opening symbols

59 case '[':60 case '(':61 theStack.push(ch); //push them

62 break;63

64 case '}': //closing symbols

65 case ']':66 case ')':67 if( !theStack.isEmpty() ) //if stack not empty,

68 {69 char chx = theStack.pop(); //pop and check

70 if( (ch=='}' && chx!='{') ||

71 (ch==']' && chx!='[') ||

72 (ch==')' && chx!='(') )73 System.out.println("Error: "+ch+" at "+j);74 }75 else //prematurely empty

76 System.out.println("Error: "+ch+" at "+j);77 break;78 default: //no action on other characters

79 break;80 } //end switch

81 } //end for82 //at this point, all characters have been processed

83 if( !theStack.isEmpty() )84 System.out.println("Error: missing right delimiter");85 } //end check()86 //--------------------------------------------------------------

87 } //end class BracketChecker

88 89 classBracketsApp90 {91 public static void main(String[] args) throwsIOException92 {93 String input;94 while(true)95 {96 System.out.print(97 "Enter string containing delimiters: ");98 System.out.flush();99 input = getString(); //read a string from kbd

100 if( input.equals("") ) //quit if [Enter]

101 break;102 //make a BracketChecker

103 BracketChecker theChecker = newBracketChecker(input);104 theChecker.check(); //check brackets

105 } //end while

106 } //end main()107 //--------------------------------------------------------------

108 public static String getString() throwsIOException109 {110 InputStreamReader isr = newInputStreamReader(System.in);111 BufferedReader br = newBufferedReader(isr);112 String s =br.readLine();113 returns;114 }115 //--------------------------------------------------------------

116 } //end class BracketsApp

117

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值