我的代码遇到了一些问题,我试图测试char中的位置是否等于整数。我设置它的方式是这样的:
for(int i = 0; i < str.length(); i++) {
if(str.charAt(i) == '[1234567890]') {
System.out.println(str);
}
}
但是当我尝试编译时,我收到错误“unclosed character literal”。有谁知道我为什么会收到错误,或者可以解释一个更简单的方法来做到这一点?
答案 0 :(得分:4)
尝试:
if ( Character.isDigit(str.charAt(i)) )
您必须检查每个字符是否为数字,以检查您的字符串是否包含整数。
答案 1 :(得分:3)
'[1234567890]'
不是char
。 char
是单个字符。这就是您的代码无法编译的原因。
答案 2 :(得分:0)
您似乎试图在字符文字中使用正则表达式。那不行。如果你想使用正则表达式,你可以写:
if(str.substring(i, i+1).matches("[1234567890]") {
但写作更好/更简单/更快/更清晰:
if(Character.isDigit(str.charAt(i))) {
另一方面,即使您进行了此更改,如果代码包含多个数字,您的代码也会多次打印str
。这真的是你想要的吗?我想知道你是否想要更像这样的东西:
if(str.matches("\d+"))
System.out.println(str);
如果所有的字符都是数字,将打印str
。
答案 3 :(得分:0)
您的代码无法编译,因为在java中,'
(单引号)用于标记一个字符。要定义字符串,您应该使用双引号"
。
在您的情况下,我相信您想检查您的字符串是否仅包含数字,并且与您尝试错误使用的正则表达式语法混淆。
您可以将if语句重写为:
char c = str.charAt(i);
if(c>= '0' && c <= 9) {
或使用模式匹配,例如
Pattern.compile("\\d+").matcher(str).matches()
在这种情况下,您甚至不需要实现任何循环。
答案 4 :(得分:0)
我认为你正在尝试写一些简单的东西:
for(int i = 0; i < str.length(); i++) {
//check str.charAt(i) is one of the chars in 1234567890
if("1234567890".indexOf(str.charAt(i))>=0) {
System.out.println(str.charAt(i));
}
}