Java 使用包含括号的列表在堆栈中存储特定括号(开始、结束) static List opening方括号=new ArrayList(); 静态列表closingcolds=newarraylist(); 公共静态最终字符串quit=“”;//用于sentinel循环 公共静态void main(字符串[]args) { 扫描仪=新的扫描仪(System.in); //包含所有开头括号的列表 打开方括号。添加(“”); 加上(“{”); 打开方括号。添加(“[”); 打开方括号。添加(“”); 系统输出打印LN(闭合括号); String sent=“value”;//分配给sent的一些伪值。 //创建堆栈以存储开口括号 堆栈打开=新堆栈(); //创建堆栈以存储右括号 Stack stackClosing=新堆栈(); 而(!sent.equals(退出)) { System.out.println(“输入要测试的字符串:”); sent=scanner.nextLine(); 对于(int i=0;i)]>
样本输出:Java 使用包含括号的列表在堆栈中存储特定括号(开始、结束) static List opening方括号=new ArrayList(); 静态列表closingcolds=newarraylist(); 公共静态最终字符串quit=“”;//用于sentinel循环 公共静态void main(字符串[]args) { 扫描仪=新的扫描仪(System.in); //包含所有开头括号的列表 打开方括号。添加(“”); 加上(“{”); 打开方括号。添加(“[”); 打开方括号。添加(“”); 系统输出打印LN(闭合括号); String sent=“value”;//分配给sent的一些伪值。 //创建堆栈以存储开口括号 堆栈打开=新堆栈(); //创建堆栈以存储右括号 Stack stackClosing=新堆栈(); 而(!sent.equals(退出)) { System.out.println(“输入要测试的字符串:”); sent=scanner.nextLine(); 对于(int i=0;i)]>,java,list,stack,Java,List,Stack,样本输出: 堆栈(用于打开括号):[(,),],>] 但是,当分别打印两个堆栈时,它会输出s 两个堆栈的[(,),],>] 打开方括号和关闭方括号是字符串的s。但是,您可以检查这些集合是否包含s: 由于集合s不包含任何字符s,因此未找到匹配项,这就是为什么所有元素都添加到两个堆栈s的原因 若要解决此问题,请在测试前将字符的集合s设置为打开括号和关闭括号,或者将c转换为字符串,如果它包含在其中一个集合中 (大多数集合s检查,如果它们包含一个元素,则使用该方法,对于字符串和字符,如果两个实例的
- 堆栈(用于打开括号):
[(,),],>]
- 两个堆栈的
[(,),],>]
打开方括号
和关闭方括号
是字符串
的s。但是,您可以检查这些集合是否包含s:
由于集合
s不包含任何字符
s,因此未找到匹配项,这就是为什么所有元素都添加到两个堆栈
s的原因
若要解决此问题,请在测试前将字符的集合
s设置为打开括号
和关闭括号
,或者将c
转换为字符串
,如果它包含在其中一个集合
中
(大多数集合
s检查,如果它们包含一个元素,则使用该方法,对于字符串
和字符
,如果两个实例的类型相同,则只返回true
)打开方括号
和关闭方括号
是字符串
的s。但是,您可以检查这些集合是否包含s:
由于集合
s不包含任何字符
s,因此未找到匹配项,这就是为什么所有元素都添加到两个堆栈
s的原因
若要解决此问题,请在测试前将字符的集合
s设置为打开括号
和关闭括号
,或者将c
转换为字符串
,如果它包含在其中一个集合
中
(大多数集合
s检查,如果它们包含一个元素,则使用该方法,对于字符串
和字符
,如果两个实例的类型相同,则只返回true
)欢迎使用StackOverflow。请查看此内容以改进您的问题。如何打印堆栈,此外,请尝试使用if-else并从if条件中删除“!”标点。使用普通的“print”语句;System.out.println(“…”+stackOpening);我删除了“!”,但它没有在堆栈中存储任何内容。这是Java标准库中的类吗?Java.util.stack
?OpeningBrands
和ClosingBrands
的定义是什么?List OpeningBrands=new ArrayList();List ClosingBrands=new ArrayList();欢迎使用StackOverflow。请查看此内容以改进您的问题。如何打印堆栈,此外,请尝试使用if-else并从if条件中删除“!”标点。使用普通的“print”语句;System.out.println(“…”+stackOpening);我删除了“!”,但它没有在堆栈中存储任何内容。这是Java标准库中的类吗?Java.util.stack
?OpeningBrands
和ClosingBrands
的定义是什么?List OpeningBrands=new ArrayList();List ClosingBrands=new ArrayList();在我将开括号和闭括号的集合更改为“字符”时工作。谢谢。:)在我将开括号和闭括号的集合更改为“字符”时工作。谢谢。:)
static List<String> openingBrackets = new ArrayList<String>();
static List<String> closingBrackets = new ArrayList<String>();
public static final String quit = ""; // to be used in sentinel loop
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
// list containing all the opening brackets
openingBrackets.add("(");
openingBrackets.add("{");
openingBrackets.add("[");
openingBrackets.add("<");
System.out.println(openingBrackets);
// list that contains the closing brackets
closingBrackets.add(")");
closingBrackets.add("}");
closingBrackets.add("]");
closingBrackets.add(">");
System.out.println(closingBrackets);
String sent = "value"; // some dummy value assigned to sent.
// creating a stack to store the opening brackets
Stack stackOpening = new Stack();
// creating a stack to store the closing brackets
Stack stackClosing = new Stack();
while (!sent.equals(quit))
{
System.out.println("Enter a string to test:");
sent = scanner.nextLine();
for (int i=0; i<sent.length(); i++)
{
char c = sent.charAt(i);
if (! openingBrackets.contains(c))
{
// push the opening brackets in the String sent
// in the Stack for opening brackets
stackOpening.push(c);
}
if (! closingBrackets.contains(c))
{
// push only the closing brackets in the String
// in the stack for closing brackets
stackClosing.push(c);
}
}
}
}
}
char c = sent.charAt(i);
if (! openingBrackets.contains(c))