使用栈实现单词逆序输出

package cn.my.stack;


/** 
 * 用栈实现单词逆序,需要先设置栈的大小
 * 入栈、出栈、是否栈为空、是否栈已满、异常提醒
 * @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
请输入一个单词.....

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值