StackX类

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 seek(){ //查找
return StackArray[top];
}
public boolean isEmpty() //空栈判断
{
return top==-1;
}
}

Reverse反转类

public class Reverse{
private String input;
private String output;
public Reverse(String in){ //构造函数
input=in;
}
public String doRev(){ //反转功能函数 返回值为String
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()){ //将栈中的字符逐一弹出,并被ouput接收,达到反转效果
char c=theStack.pop();
output+=c;
}
return output;
}
}

主函数,测试函数

import java.io.*;			//输入流头文件
public class ReseverApp {
public static void main(String []args) throws IOException{ //函数内含有IO输入流,不处理异常就要向上抛异常
String input,output;
while(true){ //输入多组数据
System.out.println("Enter a String ");
System.out.flush(); //清空缓存区
input=getString(); //调用输入流方法↓
if(input.equals("")) break;
Reverse rv=new Reverse(input);
output=rv.doRev();
System.out.println(output);
}
}
public static String getString ()throws IOException{ //输入流方法
InputStreamReader isr=new InputStreamReader(System.in); //用InputStreamReader声明接收器,从System.in(即控制台)输入
BufferedReader br=new BufferedReader(isr); //用BufferedReader包装InputStreamReader
String s=br.readLine(); //调用BufferedReader的readLine()方法进行读取字符串
return s;
}
}

系统自带的反转函数


public class Demo {
public static void main(String []args){
StringBuilder sb=new StringBuilder("中华人民共和国");
System.out.println(sb.reverse());
}
}

Java-栈的学习(字符串的反转)的更多相关文章

  1. 在java中如何实现字符串的反转

    如 "abcdt" 反转之后是 "tdcba" 思路1: 运用递归的方法进行反转 假设反转方法为 reverseString(String str)1)当字符串 ...

  2. Java实现一个字符串的反转

    Java小程序实现字符串的反转: 方法一: public class reverseString { public static void main(String[] args) { String s ...

  3. java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)

    java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...

  4. 从几个sample来学习JAVA堆、方法区、JAVA栈和本地方法栈

    最近在看<深入理解Java虚拟机>,书中给了几个例子,比较好的说明了几种OOM(OutOfMemory)产生的过程,大部分的程序员在写程序时不会太关注Java运行时数据区域的结构: 感觉有 ...

  5. Java学习--Java 中基本类型和字符串之间的转换

    Java 中基本类型和字符串之间的转换 在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换. 其中,基本类型转换为字符串有三种方法: 1. 使用包装类的 toString() 方法 2. 使 ...

  6. java之jvm学习笔记十三(jvm基本结构)

    java之jvm学习笔记十三(jvm基本结构) 这一节,主要来学习jvm的基本结构,也就是概述.说是概述,内容很多,而且概念量也很大,不过关于概念方面,你不用担心,我完全有信心,让概念在你的脑子里变成 ...

  7. 《深入理解Java虚拟机》学习笔记之内存分配

    JVM在执行Java程序的过程中会把它所管理的内存划分若干个不同的数据区域,如下图: 大致可以分为两类:线程私有区域和线程共享区域. 线程私有区域 程序计数器(Program Counter Regi ...

  8. 第65节:Java后端的学习之Spring基础

    Java后端的学习之Spring基础 如果要学习spring,那么什么是框架,spring又是什么呢?学习spring中的ioc和bean,以及aop,IOC,Bean,AOP,(配置,注解,api) ...

  9. 《深入理解Java虚拟机》学习笔记

    <深入理解Java虚拟机>学习笔记 一.走近Java JDK(Java Development Kit):包含Java程序设计语言,Java虚拟机,JavaAPI,是用于支持 Java 程 ...

  10. 《深入理解 Java 虚拟机》学习笔记 -- 内存区域

    <深入理解 Java 虚拟机>学习笔记 -- 内存区域 运行时数据区域 主要分为 6 部分: 程序计数器 虚拟机栈 本地方法栈 Java 堆 方法区 如图所示: 1. 程序计数器(线程私有 ...

随机推荐

  1. ClickHouse之简单性能测试

    前面的文章ClickHouse之初步认识已经简单的介绍了ClickHouse,接下来进行简单的性能测试.测试数据来源于美国民用航班的数据,从1987年到2017年,有1.7亿条. 环境: centos ...

  2. java 访问剪切板(读取与设置)

    设置文本到剪切板 public void setIntoClipboard(String data) { Clipboard clipboard = Toolkit.getDefaultToolkit ...

  3. IS-IS笔记

    IS-IS:一般不会见到,唯一见到过一次是在BAT中某家的骨干网 |->CLNP (类似IP,IPX)|->CLNS->|->IS-IS (Routing,IGP)ISO-&g ...

  4. 比较两个DataTable是否相等

    ///   <summary>        ///   比较两个DataTable内容是否相等,先是比数量,数量相等就比内容         ///   </summary> ...

  5. datatable删除行之datatable.Rows[i].Delete()。标记之后行没有了

    使用Delete()之后行消失了 先在for循环外加上dt.AcceptChanges(); 删除时在dt.AcceptChanges();

  6. spring cloud config安全

    前面两篇介绍了spring cloud config服务端和客户端的简单配置,本篇介绍如何保护config server及对应config client修改. 保护config server,主要是使 ...

  7. C# 分支语句 练习题(中间变量,随机数)

    练习一 请输入年份:”(1-9999),请输入月份:”(1-12),请输入日期(要判断大小月,判断闰年),判断输入的时间日期是否正确. 计算输入的时间是当前这一年的第几天. bool dateISOK ...

  8. Memcached部署和用法

    一.Memcached简介 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网 ...

  9. Ocelot中文文档-Not Supported

    Not Supported Ocelot不支持以下几种情况 块级编码(Chunked Encoding ) - Ocelot始终会获取消息体的大小并返回内容长度(Content-Length).这种情 ...

  10. FireFox升级后FireBug不能使用

    今天发现,火狐浏览器从49.0.2升级到50.0.2之后,firebug的js调试被禁用了,果断去找49.0.2的版本. 链接: https://ftp.mozilla.org/pub/firefox ...