在Java开关案例中检查布尔值

在Java开关案例中检查布尔值,java,numbers,switch-statement,contains,Java,Numbers,Switch Statement,Contains,因此,我在switch中输入了一个字符串,我的案例包含如下代码所示的内容: intcheck: switch(line){ case line.contains("0"): case line.contains("1"): case line.contains("2"): case line.contains("3"): case line.contains("4"): case line.contains("5"): case l

因此,我在switch中输入了一个字符串,我的案例包含如下代码所示的内容:

    intcheck: switch(line){
    case line.contains("0"):
    case line.contains("1"):
    case line.contains("2"):
    case line.contains("3"):
    case line.contains("4"):
    case line.contains("5"):
    case line.contains("6"):
    case line.contains("7"):
    case line.contains("8"):
    case line.contains("9"):
      break intcheck;
    default:
      names.put(br.readline(),0);
  }
是否可以使用switch语句实现类似的功能,还是必须使用switch语句
if语句。还有没有更简单的方法来检查字符串是否包含数字,或者这样可以吗

尽管可以用不同的方法做得更好,但如果您坚持使用
切换案例
构造,请尝试以下方法:

OptionalInt containedNumber = OptionalInt.empty();
Intcheck: for( var i = 0; i < 10; ++i )
{
  switch( i )
  {
    case 0: if( line.contains( "0" ) containedNumber = OptionalInt.of( 0 ); break Intcheck;
    case 1: if( line.contains( "1" ) containedNumber = OptionalInt.of( 1 ); break Intcheck;
    …
    case 9: if( line.contains( "9" ) containedNumber = OptionalInt.of( 9 ); break Intcheck;
    default:
      continue IntCheck;
  }
}
if( containedNumber.isEmpty() ) names.put( br.readline(), 0 )

这是不可能的。如果(!line.replaceAll(“\\D+”,“).isEmpty())(创建一个新字符串,将
行中的所有非数字替换为
,“
检查该字符串是否为空-仅当
行中至少有一个数字时才为真)。@elliotfrisch为什么不将
行中的所有非数字替换为
匹配(“.\\D.*”)
?@TimBiegeleisen在我看来不错。我选择了发生的第一件事,这似乎对这个问题是合理的。如果你打开
布尔值
,你只能有两种情况:
;并且大小写值必须是常量,而不是(非最终)变量或方法返回值。这是不可能的,因为您正在将
字符串
作为
开关
参数传递,并在
大小写
语句中使用
布尔
进行映射。因为您必须使用
if..else梯形图
或类似逻辑。否则,对于参数和映射,您必须在开关盒中使用相同的数据类型。
OptionalInt containedNumber = OptionalInt.empty();
for( var i = 0; (i < 10) && containedNumber.isEmpty(); ++i )
{
    if( line.contains( Integer.toString( i ) ) containedNumber = OptionalInt.of( i );
}
if( containedNumber.isEmpty() ) names.put( br.readline(), 0 )