2013-04-02 46 views
0

对不起,如果这很长,但请忍受我。我试图检查,与递归,如果2个字符串是相同的(这是我能够通过基本切断部分字符串),并有通配符的特殊情况:使用递归匹配字符串与通配符

我不能得到我试图检查是否存在'@',并再次调用该函数,并为asterix类似的想法,但我无法得到它。任何帮助,将不胜感激。谢谢。

+0

您可以使用''(单引号)运算符而不是“”(双引号)运算符来比较字符和文字。 –

+0

您是否使用过调试器来遍历代码? – Bernard

回答

1

就显示代码的相关部分:用.equals字符串

else if (c1String.equals("@") || c2String.equals("@")) { 
      return areTheSame(x.substring(1), y.substring(1)); 
     } 

     else if (c1String.equals("*") || c2String.equals("*")){ 
      return true; 
     } 

我只是代替(==)。这照顾你的前两种情况。

==检查您不需要的参考平等。您需要检查值是否相同,因此使用.equals方法进行字符串比较。

为了更加清晰,我建议你阅读java文档。

三是特殊情况,你需要明确地照顾它作为

else if (x.length() == 0 && y.length() != 0 || y.length() == 0 
      && x.length() != 0) { 
     return false; 
    } 

这个代码块部队返回false。 [你需要处理你的特殊情况,如果在第三种情况下强制返回true。]

希望这会有所帮助。

+0

非常感谢您的帮助和回复:)。你有什么提示/提示可以给我第三个案子吗? – StackPWRequirmentsAreCrazy

+0

是的。在else if块(你现在刚刚返回false的地方),只需为你的特殊情况添加一个条件即可。选择非零长度的字符串并检查是否所有字符均为'*'。如果确实如此,则返回true否则返回false。 – prashant

+0

再次感谢你! – StackPWRequirmentsAreCrazy