我想检查char是否为null?但为什么这段代码不起作用? letterChar == null
也无效。我搜索了许多问题,但没有看到任何解决方案,大多数解决方案都是String
。
String letter = enterletter.getText().toString();
char letterChar = letter.charAt(0);
if(letterChar == ' ' || letterChar == NULL) // this is where the code won't works
{
Toast.makeText(getApplicationContext(), "Please enter a letter!", Toast.LENGTH_LONG).show();
}
答案 0 :(得分:1)
char
不能是null
,因为它是原始的,因此您无法检查它是否等于null
,您必须找到解决方法。
您是否也想检查letterChar == ' '
空格或空字符串?既然你有空间。
前两个答案here可能有助于您either先检查String letter
是否为空。
or将char letterChar
转换为int并检查它是否等于0
,因为char的默认值是\u0000
- (ascii表上的nul字符,当你说letterChar == null
)时,你所检查的是空引用,而不是空引用 - 当施法时0
。
答案 1 :(得分:0)
char 是原始数据类型,因此不能用于检查 null。
对于您的情况,您可以这样检查。
if (letterChar == 0) //will be checked implicitly
{
System.out.println("null");
}
//or use this
if (letterChar == '\0')
{
System.out.println("null");
}
答案 2 :(得分:-1)
从您的代码中看起来您使用Unicode并且您搜索的方法是 Character 类(java.lang)
Character.isLetter(ch);
它还包含许多可以为您提供的有用的静态方法。 如果是这样,代码将是
String letter = enterletter.getText().toString();
char letterChar = letter.charAt(0);
if(!Character.isLetter(letterChar))
{
Toast.makeText(getApplicationContext(), "Please enter a letter!", Toast.LENGTH_LONG).show();
}
但如果我需要回答你的问题(不考虑你的目标),那么你需要的代码取决于你的意思是“is char null”。
在Java中,char不能== null。 如果要检查它是否不是空白区域,则需要执行
if (ch == ' ')
如果您想检查是否没有断路器(空格,HT,VT,CR,NL等),您应该在上面提出的内容中添加以下内容:
if (ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n' || ch == '\x0b')