Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.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 是否有一种更健壮的方法来实现依赖于通配符的字符串值的程序流?_Java - Fatal编程技术网

Java 是否有一种更健壮的方法来实现依赖于通配符的字符串值的程序流?

Java 是否有一种更健壮的方法来实现依赖于通配符的字符串值的程序流?,java,Java,在我的程序中,用户可以传递4个可能的日期。3月31日、6月30日、9月30日和12月31日。 然而,用户可以请求任何年份的数据。例如,他们可以要求6/30/15、6/30/88或6/30/16 然而,我的程序只能采用两种可能的流程。规则很简单,如下所示: 如果请求的日期以3/31或9/30开始,则采用flow#1 如果请求的日期以6/30或12/31开始,则采用flow#2 我本来可以硬编码的,但由于涉及多年,我们不能这样做。另外,我知道我们不能将正则表达式与switch语句一起使用 我的代码:

在我的程序中,用户可以传递4个可能的日期。3月31日、6月30日、9月30日和12月31日。 然而,用户可以请求任何年份的数据。例如,他们可以要求6/30/15、6/30/88或6/30/16

然而,我的程序只能采用两种可能的流程。规则很简单,如下所示:

如果请求的日期以3/31或9/30开始,则采用flow#1

如果请求的日期以6/30或12/31开始,则采用flow#2

我本来可以硬编码的,但由于涉及多年,我们不能这样做。另外,我知道我们不能将正则表达式与switch语句一起使用

我的代码:

我编写了以下代码,其中我首先将变量reportDate转换为字符串。然后,我使用if语句来确定传递的日期是“6/30/*”还是“12/31”。如果是,我将在if条件中添加一个方法来处理该日期。在else部分,我将假设传递的日期必须是“3/31/”或“9/30/”


我对这段代码如何假设流#1不太满意,这取决于它是否在if条件下找到匹配项。必须有更好的方法来实现这一点。理想情况下,我希望这样做,它只接受来自4个场景(季度)的日期我提到过。有人能帮我把这段代码变得更健壮吗?我觉得这段代码在这一点上是业余的。谢谢。

我学到了两个技巧:

  • 在这种情况下,| |运算符更适合(有效),因为我们只需要确定第一个条件是否为真

  • 由于正则表达式的计算速度较慢,因此使用“startsWith”将是一种理想的方法

  • 例如:

    if (requestedDate.startsWith("6/30/") | requestedDate.startsWith("12/31/")) {
    

    如果,则使用
    else,同时使用
    requestedDate.matches(((6/30 | 12/31)/.*)
    if (requestedDate.startsWith("6/30/") | requestedDate.startsWith("12/31/")) {