/**
* 栈
* Create by Administrator
* 2018/6/11 0011
* 上午 10:20
**/
public class StackR { private int maxSixe; private char[] stackArray; private int top; public StackR(int s) {
this.maxSixe = s;
this.stackArray = new char[maxSixe];
this.top = -1;
} /**
* 入栈
* @param j
*/
public boolean push(char j){
if(isFull()){
System.out.println("栈已满");
return false;
}else{
this.stackArray[++top] = j;
return true;
}
} /**
* 出栈
*/
public char pop(){
return stackArray[top--];
} /**
* 查看
* @return
*/
public void peek(){
System.out.println(stackArray[top]);
} /**
* 判断栈是否为空
* @return
*/
public boolean isEmpty(){
return (top == -1);
} /**
* 判断栈是否满了
* @return
*/
public boolean isFull(){
return (top == maxSixe-1);
}
}

  

public class BracketChecher {

    private String input;

    public BracketChecher(String input) {
this.input = input;
} public void check(){
int stackSize = input.length();
StackR stackR = new StackR(stackSize);
for (int i = 0; i < stackSize; i++) {
char ch = input.charAt(i);
switch (ch){
case '{':
case '[':
case '(':
stackR.push(ch);
break;
case '}':
case ']':
case ')':
if(!stackR.isEmpty()){
char chx = stackR.pop();
if(ch == '}' && chx != '{' || ch == ']' && chx != '[' || ch == ')' && chx != '('){
System.out.println("Error:"+ch+" at "+i);
}
}else{
System.out.println("Error:"+ch+" at "+i);
}
default:
break;
}
}
if(!stackR.isEmpty()){
System.out.println("Error: missing right delimiter");
}
} public static String getString() throws IOException{
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String s = br.readLine();
return s;
} public static void main(String[] args) throws IOException {
while(true){
System.out.flush();
String input = getString();
BracketChecher b = new BracketChecher(input);
b.check();
}
}

  测试控制台输入字符串:a{b(c]d}

  结果:Error:] at 3

java学习之—栈匹配字符串符号的更多相关文章

  1. js 正则学习小记之匹配字符串

    原文:js 正则学习小记之匹配字符串 今天看了第5章几个例子,有点收获,记录下来当作回顾也当作分享. 关于匹配字符串问题,有很多种类型,今天讨论 js 代码里的字符串匹配.(因为我想学完之后写个语法高 ...

  2. js 正则学习小记之匹配字符串优化篇

    原文:js 正则学习小记之匹配字符串优化篇 昨天在<js 正则学习小记之匹配字符串>谈到 个字符,除了第一个 个,只有 个转义( 个字符),所以 次,只有 次成功.这 次匹配失败,需要回溯 ...

  3. js 正则学习小记之匹配字符串字面量优化篇

    昨天在<js 正则学习小记之匹配字符串字面量>谈到 个字符,除了第一个 个,只有 个转义( 个字符),所以 次,只有 次成功.这 次匹配失败,需要回溯后用 [^"] 才能匹配成功 ...

  4. 解决java switch……case不能匹配字符串的问题

    java1.7已经支持了匹配字符串 方案1. enum Animal { dog,cat,bear; public static Animal getAnimal(String animal){ re ...

  5. Java学习之栈和堆的区别

    在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配. 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配 ...

  6. js 正则学习小记之匹配字符串字面量

    今天看了第5章几个例子,有点收获,记录下来当作回顾也当作分享. 关于匹配字符串问题,有很多种类型,今天讨论 js 代码里的字符串匹配.(因为我想学完之后写个语法高亮练手,所以用js代码当作例子) va ...

  7. java中使用正则表达式匹配字符串

    在Java中使用正则表达式去匹配相应的字符串: String importFileRole = "(import)\\s*[a-zA-Z0-9_<>.]+\\;";// ...

  8. java学习,从一个字符串中统计同一类型出现的次数

    1.从字符串“AS345asdzf*())sddsWE”中统计大写字母.小写字母.其他类型的出现的次数 String s="AS345asdzf*())sddsWE"; int l ...

  9. java学习之—栈

    /** * 栈 * Create by Administrator * 2018/6/11 0011 * 上午 10:20 **/ public class StackX { private int ...

随机推荐

  1. centos7下安装docker(15.7容器跨主机网络---calico)

    Calico是一个纯三层的虚拟网络方案,Calico为每个容器分配一个IP,每个host都是router,把不同host的容器连接起来.与vxlan不同的是:calico不对数据包进行封装,不需要NA ...

  2. [Algorithm] 如何正确撸<算法导论>CLRS

    其实算法本身不难,第一遍可以只看伪代码和算法思路.如果想进一步理解的话,第三章那些标记法是非常重要的,就算要花费大量时间才能理解,也不要马马虎虎略过.因为以后的每一章,讲完算法就是这样的分析,精通的话 ...

  3. 转://通过udev创建ASM共享磁盘(RAC)

    OS:RedHat EL6.0 Oracle:   Oracle 11gR2 在Oracle 11gR2,构建RAC时可以通过ASM创建asm disk,但是需要安装asmlib相关软件:对于RedH ...

  4. 3D打印社区

    http://mc.dfrobot.com.cn/forum.php?mod=forumdisplay&fid=100&filter=typeid&typeid=9

  5. oracle11g处理空表

    先查询一下当前用户下的所有空表select table_name from user_tables where NUM_ROWS=0;用以下这句查找空表select 'alter table '||t ...

  6. Linux 创建静态库(.a)和动态库(.so)

    0. 回顾一下 gcc 选项 ============================================== -E : 仅做预处理,例如去注释,宏展开,include 展开等 -S : ...

  7. idea 上传代码到 gitee

    https://www.2cto.com/net/201804/740238.html 这一步如果是个空仓库可以提交,如果是个已有的项目 Define remote 一下就可以了,不要提交代码

  8. 【C#复习总结】细说 Lambda表达式

    1 前言 本系列会将[委托] [匿名方法][Lambda表达式] [泛型委托] [表达式树] [事件]等基础知识总结一下.(本人小白一枚,有错误的地方希望大佬指正) 系类1:细说委托 系类2:细说匿名 ...

  9. 使用 IIS 在 Windows 上托管 ASP.NET Core2.0

    准备: 操作系统:Windows Server 2008 R2 或更高版本 开发环境:VS2017 第一步:新建项目ASP.NET Core Web应用程序 在 Visual Studio 中,选择“ ...

  10. React 系列 - 写出优雅的路由

    前言 自前端框架风靡以来,路由一词在前端的热度与日俱增,他是几乎所有前端框架的核心功能点.不同于后端,前端的路由往往需要表达更多的业务功能,例如与菜单耦合.与标题耦合.与"面包屑" ...