Java-栈的学习(字符串的反转)
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-栈的学习(字符串的反转)的更多相关文章
- 在java中如何实现字符串的反转
如 "abcdt" 反转之后是 "tdcba" 思路1: 运用递归的方法进行反转 假设反转方法为 reverseString(String str)1)当字符串 ...
- Java实现一个字符串的反转
Java小程序实现字符串的反转: 方法一: public class reverseString { public static void main(String[] args) { String s ...
- java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)
java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...
- 从几个sample来学习JAVA堆、方法区、JAVA栈和本地方法栈
最近在看<深入理解Java虚拟机>,书中给了几个例子,比较好的说明了几种OOM(OutOfMemory)产生的过程,大部分的程序员在写程序时不会太关注Java运行时数据区域的结构: 感觉有 ...
- Java学习--Java 中基本类型和字符串之间的转换
Java 中基本类型和字符串之间的转换 在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换. 其中,基本类型转换为字符串有三种方法: 1. 使用包装类的 toString() 方法 2. 使 ...
- java之jvm学习笔记十三(jvm基本结构)
java之jvm学习笔记十三(jvm基本结构) 这一节,主要来学习jvm的基本结构,也就是概述.说是概述,内容很多,而且概念量也很大,不过关于概念方面,你不用担心,我完全有信心,让概念在你的脑子里变成 ...
- 《深入理解Java虚拟机》学习笔记之内存分配
JVM在执行Java程序的过程中会把它所管理的内存划分若干个不同的数据区域,如下图: 大致可以分为两类:线程私有区域和线程共享区域. 线程私有区域 程序计数器(Program Counter Regi ...
- 第65节:Java后端的学习之Spring基础
Java后端的学习之Spring基础 如果要学习spring,那么什么是框架,spring又是什么呢?学习spring中的ioc和bean,以及aop,IOC,Bean,AOP,(配置,注解,api) ...
- 《深入理解Java虚拟机》学习笔记
<深入理解Java虚拟机>学习笔记 一.走近Java JDK(Java Development Kit):包含Java程序设计语言,Java虚拟机,JavaAPI,是用于支持 Java 程 ...
- 《深入理解 Java 虚拟机》学习笔记 -- 内存区域
<深入理解 Java 虚拟机>学习笔记 -- 内存区域 运行时数据区域 主要分为 6 部分: 程序计数器 虚拟机栈 本地方法栈 Java 堆 方法区 如图所示: 1. 程序计数器(线程私有 ...
随机推荐
- PostgreSQL 使用小点
1.timestamp 有分时区和无时区(减少使用),8个字节,包含日期和时间,范围是:公元前4713 - 公元294276.底层存储的是时间戳,这对任何地区的都一样,而具体时间显示则可从数据库层面设 ...
- PetaPoco在ASP.NET Core 2.2中使用注入方式访问数据库
.Net Core中一个特别重要的特性就是依赖注入功能,那么我们在使用PetaPoco的时候是否也可以使用依赖注入特性呢? 回答当然是可以的啦.使用方法(两种注入方式)如下 services.AddS ...
- NLog日志框架使用探究-1
目录 前言 为什么是NLog? 目的 配置 基本配置 日志等级 输出例子 目标 参数 规则 日志分发 日志收集 结语 参考文档 前言 日志是每个程序的基本模块.本文是为了探究如何通过NLog方便及记录 ...
- JavaScript实现iphone时钟
看效果(欢迎各位同学推荐更好的gif制作软件) 请看代码 <!DOCTYPE html> <html lang="en"> <head> < ...
- MySQL事务笔记
1.结束事务的方法用什么? 2.事务的最终形态是什么? commit 提交 rollback 回滚 3.事务的四大特征? ⑴ 原子性 一个事务是最小的工作单元,事务包含的所有操作要么全部成功,要么全部 ...
- C# ValueTuple 原理
本文告诉大家一些 ValueTuple 的原理,避免在使用出现和期望不相同的值.ValueTuple 是 C# 7 的语法糖,如果使用的 .net Framework 是 4.7 以前,那么需要使用 ...
- LInux Crontab及命令
定时任务(cron job)被用于安排那些需要被周期性执行的命令.利用它,你可以配置某些命令或者脚本,让它们在某个设定的时间内周期性地运行.cron 是 Linux 或者类 Unix 系统中最为实用的 ...
- Java并发编程:ThreadLocal的使用以及实现原理解析
前言 前面的文章里,我们学习了有关锁的使用,锁的机制是保证同一时刻只能有一个线程访问临界区的资源,也就是通过控制资源的手段来保证线程安全,这固然是一种有效的手段,但程序的运行效率也因此大大降低.那么, ...
- 百度网盘满速下载器:pandownload
http://pandownload.com/index.html 作者提示:1.软件使用 C++ 编写2.大文件需要等待一段时间才会有下载速度3.文件名含有特殊字符可能会下载出错,请重命名再下载4. ...
- canvas-star1.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...