0

Dear all.
Thanks for you kind and generous supporting.
From the String s="<hell <world </world </hell";
I wanted push the elements "<hello, <world" into stack, and pop off if current element equal to peek element in stack.

Question: Even stack.peek().equals(CURRENT ELEMENT), why can not pop off, but occurs error??
Please give me your suggestion. PLEASE!!!!

import java.util.*;

public class GomiTest{
	
	public static void main(String[] args){
		Stack<String> stack = new Stack<String>();
		String s="<hell <world </world </hell";
		String temp[]=null;
		String jin;
		temp=s.split(" ");
		
		for(int i=0;i<temp.length;i++){
			if(temp[i].startsWith("</")){
				jin=temp[i].replace("/","");
				//System.out.println("jin "+jin);
				if(!stack.empty()&&stack.peek().equals(jin)){
		          System.out.println("pop "+stack.pop());
				}else{
					System.out.println("error");
				}
			//	System.out.println("pushed "+temp[i].replace("</",""));
			}else if(temp[i].startsWith("<")){
				//jin=temp[i].replace("<","");
				System.out.println("pushed "+temp[i]);
			}else{
				System.out.println("other "+temp[i]);
			}
		}
	}
}
4
Contributors
4
Replies
5
Views
7 Years
Discussion Span
Last Post by jon.kiparsky
0

@JamesCherrill , Sorry sir, it was my mistake
Thanks for attention given

0

Why are you peeking at the stack in the first place? Think of it as a real stack: push and pop only. When your current token has a '/', you pop the stack. If the item you pop is not equal to the current token (modulo '/', of course) then you know you have an invalid string. For a student code assignment, you can just throw off an error there.
If you want more robust code, you would write more complex handling, which might involve pushing the popped item back on the stack, but for now, do it simple.

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.