另外,如果用户输入的内容只有1或0,我该如何提示用户再次尝试?
我意识到我必须使用for或while循环,但我不确定该放置什么条件。
我试图拥有它,以便提示用户输入二进制内容,如果他们不输入二进制内容,再次要求输入二进制内容,并重复直到他们做。
提前致谢!
答案 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;
}