java - 在 Java 中使用 .equals()、.isEmpty() 和 .length() 检查空字符串

标签 java if-statement

我正在用 Java 编写一些代码来检查两个字符串是否是字谜。这是针对 Anagrams problem on Hackerrank .

我的代码在 17 个测试用例中仅 1 个失败,我猜测这是由于输入无效造成的。这就是我的问题所在。在该方法的一开始,我想检查输入字符串是否为 null 或空字符串,如果是,则返回 false。

这是相关的代码块 -

private static boolean isAnagram(String a, String b) {
        System.out.println(a + " " + b);
        if( a == null || b == null || a.equals("") || b.equals("") ) {
            System.out.println("Inside");
            return false;
        }

        HashMap<String, Integer> map1 = new HashMap<>();
        HashMap<String, Integer> map2 = new HashMap<>();

问题是,当我使用无效输入(例如 "hello""")测试此方法时,if block 似乎没有执行。我尝试用 .isEmpty().length() == 0 替换 .equals() 方法,但无论我使用哪种方法,if 都不起作用。

使用 JShell,我检查过如果我使用 "" 创建一个空字符串,所有这些方法都有效 -

jshell> String a = ""
a ==> ""

jshell> a.isEmpty()
$2 ==> true

jshell> a.length()
$3 ==> 0

jshell> a.equals("")
$4 ==> true

jshell> a == null
$5 ==> false

jshell> "" == ""
$6 ==> true

jshell>

jshell> "".equals("")
$7 ==> true

jshell> "".length()

这种检查空字符串的方法在 if block 中不起作用是否有原因?

<小时/>

更新 - Pastebin 上的完整代码

最佳答案

我发现您没有通过一个测试用例,并且它不涉及无效输入。您错过了一件事,您应该考虑区分大小写

a = a.toLowerCase();
b = b.toLowerCase();

只需在验证后将字符串小写即可,应该没问题

关于java - 在 Java 中使用 .equals()、.isEmpty() 和 .length() 检查空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53257544/

相关文章:

java - java 文件系统有什么并发性?

java - 从 JAX-RS 服务获取资源时出错

Java-ml 聚类距质心的距离

java - @Configuration 类中 @PostConstruct 的预期行为是什么?

Jquery 用按钮动画高度变化

java - 应该在哪一层进行验证?

PHP:如何更改依赖于另一个变量的变量? (新手的东西)

Java if条件代码优化

JAVA如何求14位数值的总和?

python - 使用 Scala 解析 Python 的 If 语句