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. 程序计数器(线程私有 ...
随机推荐
- 3分钟看完Java 8——史上最强Java 8新特性总结之第三篇 函数式编程技巧
目录 · 改写设计模式 · 策略模式(Strategy Pattern) · 模板方法模式(Template Method Pattern) · 观察者模式(Observer Pattern) · 责 ...
- Java基础之Java 修饰符
前言:Java内功心法之Java 修饰符,看完这篇你向Java大神的路上又迈出了一步(有什么问题或者需要资料可以联系我的扣扣:734999078) Java语言提供了很多修饰符,主要分为以下两类: 访 ...
- 如何在github上搭建一个免费的 无限流量的静态网页博客Github pages
前言: 看到很多相关的教程,但是在实际操作的时候还是遇见了不少问题,这里记录分享一下我的操作流程.免费空间用过很多,博客也用过一些,听说了github后就想试着玩一下这个静态库,感觉挺不错的,操作也比 ...
- loggin(日志模块)
这是一个提供日志功能的模块,它可以让你更敏捷的为你程序提供日志功能 一.常用日志记录场景及最佳解决方案: 日志记录方式 最佳记录日志方案 普通情况下,在控制台显示输出 print()报告正常程序操作过 ...
- Django之FBV与CBV
一.FBV与CBV FBV(function based views),即基于函数的视图:CBV(class based views),即基于类的视图,也是基于对象的视图.当看到这个解释时,我是很萌的 ...
- Shell 数组定义与获取
Shell 数组 bash支持一维数组(不支持多维数组),并且没有限定数组的大小. 类似与 C 语言,数组元素的下标由 0 开始编号.获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于 ...
- C#中的readonly跟const用法小结
总结一下常量和只读字段的区别: 由来: 笔者也是在看欧立奇版的<.Net 程序员面试宝典>的时候,才发现自己长久以来竟然在弄不清出两者的情况下,混用了这么长的时间.的确,const与rea ...
- Java并发编程:线程的生命周期是个怎样的过程?
前言 在日常开发过程中,如果我们需要执行一些比较耗时的程序的话,一般来说都是开启一个新线程,把耗时的代码放在线程里,然后开启线程执行.但线程是会耗费系统资源的,如果有多个线程同时运行,互相之间抢占系统 ...
- 学了9天java,没什么感觉,有点害怕,总结一下for循环。
for(int i=0; i<100; i++){ if(i%3==0){ continue://满足条件的跳过 } System.out.print(i); } //最后输出的数中没有满足3的 ...
- ECMAScript正则表达式6个最新特性
译者按: 还没学好ES6?ECMAScript 2018已经到来啦! 原文:ECMAScript regular expressions are getting better! 作者: Mathias ...