/**
* 用栈实现单词逆序,需要先设置栈的大小
* 入栈、出栈、是否栈为空、是否栈已满、异常提醒
* @author wangbowen @date 2015年1月7日
* @version 1.0
*/
public class StackWorlds {
/**
* 栈大小
*/
private int maxSize;
/**
* 栈数组
*/
private char [] stackArray;
/**
* 顶栈
*/
private int top;
/**
* 带参数的构造方法
* @param temp
*/
public StackWorlds(int temp){
maxSize =temp;
stackArray = new char[maxSize];
top = -1;
}
/**
* 入栈
* @param num
* void
*/
public void push(char num){
//++top 在插入之前递增
if(isFull()){
System.out.println("栈空间已经用完.....");
}else{
stackArray[++top] = num;
}
}
/**
* 出栈
* @return
* long
*/
public char pop(){
return stackArray[top--];
}
/**
* 查看
* @return
* long
*/
public long peek(){
return stackArray[top];
}
/**
* 是否为空
* @return
* boolean
*/
public boolean isEmpty(){
return (top==-1);
}
/**
* 是否已经栈满
* @return
* boolean
*/
public boolean isFull(){
return (top ==maxSize-1);
}
/**
* 获取栈大小
* @return maxSize 栈大小
*/
public int getMaxSize() {
return maxSize;
}
/**
* 设置栈大小
* @param maxSize 栈大小
*/
public void setMaxSize(int maxSize) {
this.maxSize = maxSize;
}
/**
* 获取栈数组
* @return stackArray 栈数组
*/
public char[] getStackArray() {
return stackArray;
}
/**
* 设置栈数组
* @param stackArray 栈数组
*/
public void setStackArray(char[] stackArray) {
this.stackArray = stackArray;
}
/**
* 获取顶栈
* @return top 顶栈
*/
public int getTop() {
return top;
}
/**
* 设置顶栈
* @param top 顶栈
*/
public void setTop(int top) {
this.top = top;
}
}
package cn.my.stack;
/**
* 处理单词
* @author wangbowen @date 2015年1月7日
* @version 1.0
*/
public class Reverser {
/**
* 输入字符
*/
private String inputString;
/**
* 输出字符
*/
private String outString;
/**
* 带参数的构造方法
* @param n
*/
public Reverser(String n){
inputString = n ;
}
/**
* 处理单词的程序
* @return
* String
*/
public String doRev(){
//获取栈的大小
int stackSize = inputString.length();
StackWorlds stackX = new StackWorlds(stackSize);
//入栈
for (int i = 0; i < inputString.length(); i++) {
char ch = inputString.charAt(i);
stackX.push(ch);
}
//出栈
outString = "";
while(!stackX.isEmpty()){
char cr = stackX.pop();
outString =outString +cr;
}
return outString;
}
}
package cn.my.stack;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* 测试单词逆序输出
* @author wangbowen @date 2015年1月7日
* @version 1.0
*/
public class ReverserTest {
/**
* 获取当前输入的字符流
* @return
* @throws IOException
* String
*/
public static String getReverserString() throws IOException{
InputStreamReader inputStreamReader =new InputStreamReader(System.in);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String str =bufferedReader.readLine();
return str;
}
public static void main(String[] args) throws IOException {
String inputStr ,outStr;
while(true){
System.out.print("请输入一个单词.....");
System.out.flush();
inputStr = getReverserString();
if(inputStr.equals("")){
break;
}else{
Reverser reverser = new Reverser(inputStr);
outStr = reverser.doRev();
System.out.println("逆序之后的单词:"+outStr);
}
}
}
}
输出结果:
请输入一个单词.....loveyou
逆序之后的单词:uoyevol
请输入一个单词.....