こんにちは、私は、ユーザーが一連のブラケット (一度に 1 つ) を入力し、対応する終了ブラケットがあるかどうかを確認できるようにするプログラムを作成しようとしています。読みやすくするために、括弧は毎回新しい行に入力されます。私はそれのためにADTを設定しましたが、whileループを実行してチェックする方法を考えることができません.. (ブラケットが入力されているかどうかはわかっています。それをスタックにプッシュする必要があり、(が入力したスタックの1つをポップする必要がありますが、真ん中のビットを解決することはできません:)
//main code
import java.util.*;
public class SameBrackets
{
public static void main(String[] args)
{
Stack bracket = new Stack();
Scanner kybd = new Scanner(System.in);
System.out.print("Enter bracket > ");
String bracketentered = kybd.next();
if ("(".equals(bracketentered) )
{
bracket.push(bracketentered);
System.out.println(") needed");
}
else if (")".equals(bracketentered))
{
bracket.pop();
System.out.println("( needed");
}
}
}
//ADT コード
public class Stack
{
private String[] a; //String array
private int top;
public Stack()
{
a = new String[1]; //create String array
top = 0;
}
public boolean isEmpty()
{
return top == 0;
}
public String pop() //pop String element
{
top--;
return(a[top]); //underflow not protected
}
public void push(String x) //push String element
{
if (top == a.length)
{
resize();
}
a[top] = x;
top++;
}
private void resize()
{
String[] temp = new String[a.length * 2]; //resize String array
for (int i = 0; i < a.length; i++)
{
temp[i] = a[i];
}
a = temp;
}
}