Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中,如何检查字符串是否只包含1或0_Java - Fatal编程技术网

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

在java中,如何检查字符串是否只包含1或0,java,Java,另外,我如何提示用户重试,直到他们输入的内容中只有1或0 我意识到我必须使用for或while循环,但我不确定要将什么作为条件 我正在尝试使用它,这样会提示用户输入二进制文件,如果用户没有输入二进制文件,则会再次要求用户输入二进制文件,并重复输入,直到输入为止 提前谢谢 您可以像这样检查字符串的每个字符: String s;//user input boolean bad=false;//Starts false-will change to true if the input is bad f

另外,我如何提示用户重试,直到他们输入的内容中只有1或0

我意识到我必须使用for或while循环,但我不确定要将什么作为条件

我正在尝试使用它,这样会提示用户输入二进制文件,如果用户没有输入二进制文件,则会再次要求用户输入二进制文件,并重复输入,直到输入为止


提前谢谢

您可以像这样检查字符串的每个字符:

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
    }

您可以通过简单的正则表达式匹配:

if (inputString.matches("^[01]+$")) {
    // accept this input
}
只需使用Integer.parseInt str,2


如果不是二进制的,它将抛出NumberFormatException。您可能需要使用下面的模式。其概念是提供一个正则表达式,该正则表达式提供一致性字符串的规则,以及提示用户输入的消息和从中读取用户输入的源。循环将继续,直到找到符合条件的字符串,或者用户使用exit中断。函数将返回一致性字符串,如果用户希望退出,则返回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;
}

非常感谢。你能解释一下“char c:s.toCharArray”是做什么的吗?对于一个简单的任务来说,这是不必要的复杂代码。@KommanderKitten这样做的目的是它遍历字符串中的每个字符,for循环将s中的每个字符作为字符数组逐字表示,并将它们与“0”和“1”进行比较。如果两次比较都失败,字符既不是“0”也不是“1”,则它会将bad设置为true,这意味着字符串是坏的,然后中断循环。@ChthonicProject这是一个1 rep用户,似乎是编程新手,因此我认为regex不合适。我的解决方案写得很明白,所以很容易理解。谢谢。我确实是编程新手,试图一点一点地学习。不过,我想你可能误解了我的问题。如果字符串只包含1s或0s一个二进制数,而不包含任何其他内容,则我希望中断循环。如果它包含其他内容,请说,不!然后它将重复输入二进制数的提示。这有意义吗?它还抛出一个异常,即字符串对于integer太长。。。如果您定义11111111111111111111111111太长。