我需要创建一个布尔方法,它接受一个字符串并检查它是否是二进制数。如果是二进制,它应该返回true,如果它包含0和1以外的任何内容,则返回false。这是我的代码:
public static boolean CheckInputCorrect(String input) {
int len = input.length();
for(int i=0; i<len; i++)
if(input.charAt(i) == '1' || input.charAt(i) == '0') {
continue;
return true;
} else {
break;
return false;
}
}
我怀疑语法错误,但无论我尝试什么,都会发现错误。 任何帮助将不胜感激!
答案 0 :(得分:4)
检查每个字符,如果不 0或1,则立即返回false
。如果您浏览了所有字符,请返回true
:
public static boolean CheckInputCorrect(String input) {
final int len = input.length();
for (int i = 0; i < len; i++) {
final char c = input.charAt(i);
if (c != '1' && c != '0') {
return false;
}
}
return true;
}
不需要continue
或break
语句。当然不要在另一个陈述之前使用continue
或break
;通常会产生“无法访问”的编译器错误。
请注意,您也可以使用正则表达式执行此测试:
public static boolean CheckInputCorrect(String input) {
return input.matches("[01]*");
}
如果要多次调用它,编译模式会更有效:
private static Pattern zerosOrOnes = Pattern.compile("[01]*");
public static boolean CheckInputCorrect(String input) {
return zerosOrOnes.matcher(input).matches();
}
答案 1 :(得分:3)
如果当前字符是1
或0
,那么您还无法做出决定;到目前为止它还不错。
如果不是1
且不是0
,那么您可以立即返回false
。完成整个String
后,您可以在true
循环结束后返回for
。
for(int i=0; i<len; i++)
{
if(! (input.charAt(i) == '1' || input.charAt(i) == '0'))
{
return false;
}
}
return true;