Java 方法使括号匹配

Java 方法使括号匹配,java,methods,Java,Methods,我正在尝试做一个练习题,我必须编写一个方法,该方法接受一串花括号,如果括号匹配,则返回true,如果括号不匹配,则返回false。如果传递给我空字符串,它需要返回true。我们还可以假设给定的字符串中可以有{和}或为空 匹配必须以正确的配对顺序进行,如“{}”而不是“}{” 以下是括号匹配的示例: {} {}{} {{}} {{{}{{}}} 以下是括号不匹配的示例: { }{ {{} {{}{}{}{} 这就是我目前拥有的(请记住,我对编码比较陌生): 公共布尔括号匹配(字符串括号) { 整数

我正在尝试做一个练习题,我必须编写一个方法,该方法接受一串花括号,如果括号匹配,则返回true,如果括号不匹配,则返回false。如果传递给我空字符串,它需要返回true。我们还可以假设给定的字符串中可以有{和}或为空

匹配必须以正确的配对顺序进行,如“{}”而不是“}{”
以下是括号匹配的示例:
{}
{}{}
{{}}
{{{}{{}}}

以下是括号不匹配的示例:
{
}{
{{}
{{}{}{}{}

这就是我目前拥有的(请记住,我对编码比较陌生):

公共布尔括号匹配(字符串括号)
{
整数计数=0;
if(方括号.length()%2==1){
返回false;
}
对于(int i=0;i<方括号.length();i++){
如果((括号.字符(i)+“”)==“{”){
计数++;
}else if((括号.charAt(i)+“”)==“}”){
计数--;
}
如果(计数==-1){
返回false;
}
}
返回计数==0;
}

像这样的输入{{和{}{}{this仍然不会返回正确的输出。

您的逻辑工作正常,但比较字符的方式是错误的:永远不要使用
==
来比较字符串值-它会测试引用相等性(它们是否是相同的对象)。请尝试
方括号.charAt(i)='{'
相反。

您应该定义“匹配”的含义。字符串“}{”匹配得很好,只需一个定义。如果您的意思是它们应该始终按“{}”的顺序排列,并且可以将其他“{}”括起来配对,然后陈述,然后再次查看您的程序和您的问题输入。您正在确定数字中是否始终存在与开始括号匹配的结束括号,但与顺序或封闭性无关。我建议您了解他正在尝试学习编程,并将其用作编程练习。正则表达式可用于在某些情况下,他很有能力解决自己的问题(最终)使用正则表达式,但这不是他要问的问题。澄清@arcy,Thanks@River我想这是一个重复的例子,但初学者可能会更好地理解它。这个问题可以在Java方法部分的练习3.8.9中找到,可能会帮助其他初学者。这很有效,谢谢!我不知道为什么它以前不起作用,因为我正在通过添加+''将其转换为字符串。@Ryan Right,您将其转换为字符串,并使用
=
将其与另一个字符串进行比较,结果为false,因为
=
不比较字符串值,而是比较它们的引用。查看
public boolean bracketsMatch(String brackets)
{
    int count = 0;
    if (brackets.length() % 2 == 1){
        return false;
    }
    for(int i = 0; i < brackets.length(); i++){
        if ((brackets.charAt(i)+"") == "{"){
            count++;
        } else if ((brackets.charAt(i)+"") == "}"){
            count--;
        }
        if (count == -1){
            return false;
        }
    }
return count == 0;
}