栈的类
public class StackX {
private int maxSize;
private char[] stackArray;
private int top;
public StackX(int max){
maxSize=max;
stackArray=new char[maxSize];
top=-1;
}
public void push(char j){
stackArray[++top]=j;
}
public char pop(){
return stackArray[top--];
}
public char peek(){
return stackArray[top];
}
public boolean isEmpty(){
return top==-1;
}
}
1.字符逆序
逆序类
import java.util.Stack;
public class Reverser {
private String input;
private String output;
public Reverser(String in){
input=in;
}
public String doRev(){
int stackSize=input.length();
StackX theStack=new StackX(stackSize);
for(int i=0;i<input.length();i++){
char ch=input.charAt(i);
theStack.push(ch);
}
output="";
while(!theStack.isEmpty()){
char c=theStack.pop();
output+=c;
}
return output;
}
}
主程序类
import java.io.*;
public class ReverseApp {
public static void main(String[] args) throws IOException{
String input,output;
while(true){
System.out.println("Enter a String:");
System.out.flush();
input=getString();
if(input.equals("")) break;
Reverser theReverser=new Reverser(input);
output=theReverser.doRev();
System.out.println(output);
StringBuffer sb=new StringBuffer(input);
System.out.println(sb.reverse());
}
}
public static String getString() throws IOException{
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
String s=br.readLine();
return s;
}
}
2.分隔符匹配(括号)
匹配类
public class BracketChecker {
private String input;
public BracketChecker(String in){
input=in;
}
public void check(){
int stackSize=input.length();
StackX theStackX=new StackX(stackSize);
for(int i=0;i<input.length();i++){
char ch=input.charAt(i);
switch (ch) {
case '{':
case '(':
case '[':
theStackX.push(ch);
break;
case '}':
case ')':
case ']':
if(!theStackX.isEmpty()){
char chx=theStackX.pop();
if((ch=='}'&&chx!='{')||(ch==']'&&chx!='[')||(ch==')'&&chx!='(')){
System.out.println("Error:"+ch+" at "+i);
}else{
System.out.println("Error:"+ch+" at "+i);
}
break;
}
default:
break;
}
}
if(!theStackX.isEmpty()) System.out.println("Error: missing right delimiter.");
}
}
主程序类
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class BracketsApp {
public static void main(String[] args) throws IOException{
String input;
while(true){
System.out.println("Enter string containgning delimiters:");
System.out.flush();
input=getString();
if(input.equals("")) break;
BracketChecker theChecker=new BracketChecker(input);
theChecker.check();
}
}
public static String getString() throws IOException{
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
String s=br.readLine();
return s;
}
}
这里获得输入的字符可以用Scanner类来获取。。