【发布时间】:2020-05-02 04:55:25
【问题描述】:
所以我有一个 switch case 到 switch 我正在输入一个字符串,我的 case 是 .contains,如下面的代码所示:
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 语句来实现类似的东西,或者我必须使用 if 语句。还有一种更简单的方法来检查字符串是否包含数字或者可以吗?
【问题讨论】:
-
这是不可能的。
if (!line.replaceAll("\\D+", "").isEmpty())怎么样(创建一个新字符串,用""替换line中的所有非数字,检查它是否不为空 - 只有当line至少有一个数字时才为真)。 -
@ElliottFrisch 为什么不只是
line.matches(".*\\d.*")? -
@TimBiegeleisen 对我来说看起来不错。我选择了发生的第一件事,并且对这个问题似乎是合理的。
-
如果你打开
boolean你只能有两种情况:true和false;并且 case 值必须是常量,而不是(非最终)变量或方法返回值。 -
这是不可能的,因为您将
String作为switch参数传递并在case语句中与boolean映射。因为你必须使用if..else ladder或类似的逻辑。否则,您必须在switch case中使用相同的数据类型作为参数和映射。
标签: java numbers switch-statement contains