2014-09-30 73 views
0

我需要创建一个布尔方法来接收字符串并检查它是否是二进制数。如果它是二进制的,它应该返回true,如果它包含0和1以外的任何值,则返回false。这里是我的代码:如何使用return true语句创建布尔方法

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; 
     } 
} 

我怀疑一个语法错误,但无论我尝试它发现一个错误。 任何帮助将不胜感激!

+2

你期望'continue'和'break'做什么? – user2357112 2014-09-30 21:55:40

+2

你不需要中断,或者继续,只有在所有字符都可以的情况下,你才能“返回true”。 – 2014-09-30 21:56:40

回答

3

如果当前字符是10,那么您无法做出决定;这到目前为止还不错。

如果不是1而且它不是0,那么您可以立即返回false。一旦完成了整个String,那么在for循环结束后,您可以返回true

for(int i=0; i<len; i++) 
{ 
    if(! (input.charAt(i) == '1' || input.charAt(i) == '0')) 
    { 
     return false; 
    } 
} 
return true; 
+0

谢谢rgettman! – 2014-09-30 22:14:49

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; 
} 

没有必要对continuebreak语句。当然不要在另一个陈述之前使用continuebreak;通常会产生“不可达”的编译器错误。

请注意,您还可以通过使用正则表达式做这个测试:

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(); 
}