Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java String类的split方法,对于未提供所需输出的每个循环_Java_Arrays_Foreach - Fatal编程技术网

Java String类的split方法,对于未提供所需输出的每个循环

Java String类的split方法,对于未提供所需输出的每个循环,java,arrays,foreach,Java,Arrays,Foreach,下面的方法有时返回真值,有时返回假值。有人能检查一下这里面有什么问题吗。该方法的输入为“19” 逻辑上不正确的是else块,它应该是对成功的if块执行的否定 else { isEnabled = true; } 换成 else { isEnabled = false; } 这意味着当没有存储时,您应返回false,因为存储无效 您共享的代码块不会引发异常,因此您可以轻松摆脱try-catch 不使用布尔标志,您可以直接从块中返回,如下所示: if (storeNoArray

下面的方法有时返回真值,有时返回假值。有人能检查一下这里面有什么问题吗。该方法的输入为“19”

  • 逻辑上不正确的是
    else
    块,它应该是对成功的
    if
    块执行的否定

    else {
        isEnabled = true;
    }
    
    换成

    else {
        isEnabled = false;
    }
    
    这意味着当没有存储时,您应
    返回false
    ,因为存储无效

  • 您共享的代码块不会引发异常,因此您可以轻松摆脱
    try-catch

  • 不使用布尔标志,您可以直接从块中
    返回
    ,如下所示:

    if (storeNoArray != null && storeNoArray.length > 0) {
        for (String store : storeNoArray) {
            if (storeNo.equals(store.trim())) {
                return true;
            }
        }
    } else {
       return false;
    }
    return false;
    
  • 此外,如果您有兴趣提高可读性,可以简化为

    return Arrays.stream(storeNoArray)
                     .anyMatch(store -> storeNo.equals(store.trim()));
    

  • 预期的输出是什么?我假设“方法有时返回真值,有时返回假值。”并不意味着它为相同的输入返回不同的值。那么,对于哪些输入,您得到的结果是您不期望的呢?您希望在那里看到什么以及为什么?默认情况下,如果没有可用的存储编号,则此方法应返回true。从日志中,它不会抛出任何异常,但会返回true,有时返回false,偶尔会发生。预期输出为true。该方法的输入是“19”,它在被拆分的字符串中。@Ashok当我使用输入
    19
    运行此方法时,它将返回
    true
    ,正如您所期望的那样。这里的问题是什么?您不需要
    if/else
    只需要
    返回array.stream(storeNoArray).anyMatch(store->storeNo.equals(store.trim())应该足够了。如果
    storeNoArray
    为空,则
    anyMatch
    将返回false。@a我的回答正确,谢谢……几乎忘记了我使用的
    数组。stream
    的步骤。我们使用的是jdk 7。@Ashok在这种情况下,您可以将自己限制到第3步。。第一步的初衷是将此作为一个答案与大家分享。谢谢你。我会跟进你添加的步骤,如果我仍然看到任何问题,我会继续跟进。
    return Arrays.stream(storeNoArray)
                     .anyMatch(store -> storeNo.equals(store.trim()));