java检查char是不是是switch case语句中的数字[关闭]
Posted
技术标签:
【中文标题】java检查char是不是是switch case语句中的数字[关闭]【英文标题】:java check if char is number in switch case statment [closed]java检查char是否是switch case语句中的数字[关闭] 【发布时间】:2021-05-31 05:07:28 【问题描述】:我有一个 switch case 检查 char 是 "=" 或 "-" 还是 "+" 但我也想检查 char 是否是 0-9 之间的数字
public static Token get(char ch)
switch (ch)
case '-' :
case '+':
case '=':
return new Token(ch);
case Character.isDigit(ch): // this dosn't work
我可以用什么替换 Character.isDigit?
【问题讨论】:
这能回答你的问题吗? What is the best way to tell if a character is a letter or number in Java without using regexes? 【参考方案1】:您可以为十位字符定义明确的case
语句:
public static Token get(char ch)
switch (ch)
case '-' :
case '+':
case '=':
return new Token(ch);
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
// handle digit case
break;
这里注意,我们只是让所有的数字字符case都流到一个点来处理。
【讨论】:
【参考方案2】:这是行不通的,因为 switch case 会将您的 char ch
变量与 switch case 进行比较以获得匹配。 Character.isDigit(ch):
返回一个布尔值,不能与char ch
直接比较。
我会建议您在默认情况下检查您的状况的替代方法。
public static Token get(char ch)
switch (ch)
case '-' :
case '+':
case '=':
return new Token(ch);
default:
if(Character.isDigit(ch)
//enter code here
【讨论】:
【参考方案3】:其他答案是正确和好的。我要补充两点:
为您的逻辑使用switch
语句可能会使意图变得模糊而不是澄清它。在您的特定情况下使用一系列if-then
可能更有意义。
Java 中的 char
类型已过时,甚至无法表示 Unicode 中定义的一半字符。虽然在此特定代码中使用char
会起作用,但我建议您不要养成使用char
的习惯。相反,请学习使用code point 整数。
您可以轻松确定代码点。
String input = "?";
int codePoint = input.codePointAt( 0 );
128567
调用 Character.toString
以获取包含单个字符的 String
对象,该字符由该特定代码点整数表示。
示例代码。
public class Token
public static Token get ( int codePoint )
if ( "-+=".contains( Character.toString( codePoint ) ) )
// Do operator stuff.
return new OperatorToken( codePoint );
else if ( Character.isDigit( codePoint ) )
// Do digit stuff.
return new DigitToken( codePoint );
else
// Do default stuff.
return new DefaultToken( codePoint );
【讨论】:
以上是关于java检查char是不是是switch case语句中的数字[关闭]的主要内容,如果未能解决你的问题,请参考以下文章