在java中,如何检查字符串是否只包含1或0

时间:2015-01-30 00:33:28

标签: java

另外,如果用户输入的内容只有1或0,我该如何提示用户再次尝试?

我意识到我必须使用for或while循环,但我不确定该放置什么条件。

我试图拥有它,以便提示用户输入二进制内容,如果他们不输入二进制内容,再次要求输入二进制内容,并重复直到他们做。

提前致谢!

4 个答案:

答案 0 :(得分:5)

您可以通过简单的正则表达式匹配来完成此操作:

if (inputString.matches("^[01]+$")) {
    // accept this input
}

答案 1 :(得分:3)

只需使用Integer.parseInt (str, 2);

即可

如果不是二进制

,它将抛出NumberFormatException

答案 2 :(得分:1)

您可以检查字符串的每个字符,如下所示:

String s;//user input
boolean bad=false;//Starts false-will change to true if the input is bad
for(char c:s.toCharArray())
    if(!(c=='0'||c=='1')){//if c isn't 0 or 1
       bad=true;
       break;//break out of loop because we've already found a problem
    }

答案 3 :(得分:0)

您可能想要使用下面的模式。这个概念是提供一个“正则表达式”,它提供符合字符串的规则,以及提示用户输入的消息和读取用户输入的源。循环继续,直到找到符合要求的字符串,或者用户以“退出”中断。该函数将返回符合的字符串,如果用户想要退出,则返回null。

public String getConformingString(Scanner source, String message, String pattern) {
  String result = null;
  boolean isConformingString = false;
  System.out.println(message);

  String trialString = source.mextLine();
  while (!isConformingString) {
    if (trialString.matches(pattern) {
      isConformingString = true;
      result = isConformingString;
    } else if ("exit".equalsIgnoreString(trialString)) {
      isConformingString = true;
    } else {
      System.out.println(message);
      trialString = source.nextline();
    }
  }
  return result;
}