Wrong answer for 2nd test case

Wrong answer for 2nd test case and correct for the rest.
Where am I making a mistake?
CODE: import java.util.*;
public class Main {

public static void main(String[] args) throws Exception {
	// TODO Auto-generated method stub
	Scanner s = new Scanner(System.in);
	String str = s.next();
	Main mainobj = new Main();
	StacksUsingArrays stack = mainobj.new StacksUsingArrays(1000);
	if (isBalanced(str, stack)) {
		System.out.println("Yes");
	} else {
		System.out.println("No");
	}

}

public static boolean isBalanced(String str, StacksUsingArrays stack) throws Exception {

	for(int i = 0; i < str.length(); i++) {
        
        if(str.charAt(i) == ')') {
            if(!stack.isEmpty() && str.charAt(stack.tos) == '(') {
            stack.pop();
            } 
            else {
                stack.push(str.charAt(i));
            }
        }
        else {
            stack.push(str.charAt(i));
        }

       
    }

    if(stack.isEmpty())
        return true;
    else
        return false;
}

private class StacksUsingArrays {
	private int[] data;
	private int tos;

	public static final int DEFAULT_CAPACITY = 10;

	public StacksUsingArrays() throws Exception {
		// TODO Auto-generated constructor stub
		this(DEFAULT_CAPACITY);
	}

	public StacksUsingArrays(int capacity) throws Exception {
		if (capacity <= 0) {
			System.out.println("Invalid Capacity");
		}
		this.data = new int[capacity];
		this.tos = -1;
	}

	public int size() {
		return this.tos + 1;
	}

	public boolean isEmpty() {
		if (this.size() == 0) {
			return true;
		} else {
			return false;
		}
	}

	public void push(int item) throws Exception {
		if (this.size() == this.data.length) {
			throw new Exception("Stack is Full");
		}
		this.tos++;
		this.data[this.tos] = item;
	}

	public int pop() throws Exception {
		if (this.size() == 0) {
			throw new Exception("Stack is Empty");
		}
		int retVal = this.data[this.tos];
		this.data[this.tos] = 0;
		this.tos--;
		return retVal;
	}

	public int top() throws Exception {
		if (this.size() == 0) {
			throw new Exception("Stack is Empty");
		}
		int retVal = this.data[this.tos];
		return retVal;
	}

	public void display() throws Exception {
		if (this.size() == 0) {
			throw new Exception("Stack is Empty");
		}
		for (int i = this.tos; i >= 0; i--) {
			System.out.println(this.data[i]);
		}

	}

}

}

In the question, in β€˜input format’ it says input can contain

A string of β€˜(’ , β€˜)’ , β€˜{’ , β€˜}’ and β€˜[’ , β€˜]’
You’ve only considered β€˜()’, that is why the test case is failing.

If your query is resolved, please mark the doubt as resolved