扫描并检查二进制数
Scan and Check for Binary Numbers
我设法完成了作业,但后来我意识到一个致命的缺陷:我没有让代码接受一串二进制数。我设法让代码按照我想要的方式循环,直到输入二进制数(0 或 1),但我无法弄清楚如何使代码在没有的情况下接受一串二进制数(即:1010)破坏了我创建的循环。
我还将包括说明:1) 要求个人输入二进制数字,以及 2) 设法测试输入是否符合二进制数字系统(仅 0 和 1)允许)。
boolean b = false;
System.out.println("\nEnter a binary number:");
do {
Scanner scan1 = new Scanner(System.in);
int binaryNumber = scan1.nextInt();
if (binaryNumber > 1 || binaryNumber < 0) {
System.out.println("\nInvalid input. Try again.");
} else {
System.out.println("\nThe binary number \"" + binaryNumber + "\" is valid.");
break;
}
} while (!b);
我将如何着手编辑代码以包含一串二进制数字,但仍保持上面的循环和其他细节?还是我必须完全更改代码才能包含并接受二进制字符串?
您可以使用 REGEX [01]+
检查二进制文件,这意味着 0 和 1 的任意组合重复一个或多个。
如果没有匹配则继续直到找到有效的二进制文件并退出循环。
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("\nEnter a binary number:");
do {
String binaryNumber = scanner.nextLine();
if (!binaryNumber.matches("[01]+")) {
System.err.println("Invalid Binary Number Entered! Try Again...");
continue;
}
System.out.println("\nThe binary number \"" + binaryNumber + "\" is valid.");
break;
} while (true);
scanner.close();
}
您可以将输入作为字符串并将其与正则表达式匹配,例如 ^[0-1]+$
,而不是将输入转换为 int
将其放入代码中,它将是
boolean b = false;
System.out.println("\nEnter a binary number:");
do
{
Scanner scan1 = new Scanner(System.in);
String binaryNumber = scan1.next();
if (!binaryNumber.matches("^[0-1]+$"))
{
System.out.println("\nInvalid input. Try again.");
}
else
{
System.out.println("\nThe binary number \"" + binaryNumber + "\" is valid.");
break;
}
} while (!b);
}
不要在循环中声明扫描仪对象。对于循环的每次迭代,您都在实例化另一个 Scanner 对象。在循环之上和之外声明并初始化它。
接受字符串形式的输入,然后验证所提供的确实是二进制数这一事实:
Scanner scanner = new Scanner(System.in);
String binaryNumber = "";
while (binaryNumber.equals("")) {
System.out.print("Enter a Binary Number: --> ");
binaryNumber = scanner.nextLine();
if (!binaryNumber.matches("[01]{1,}")) {
System.err.println("Invalid Binary Number Entered! Try Again...");
binaryNumber = "";
}
else {
System.out.println("The binary number \"" + binaryNumber + "\" is valid.");
}
}
if 语句的条件 (!binaryNumber.matches("[01]+")
) 使用 String#matches() method along with a small Regular Expression (RegEx) 来确保(验证)二进制值的字符串表示被提供。如果没有,则通知用户并允许其重试。
使用的正则表达式 ("[01]{1,}"
) 基本上意味着:如果提供的字符串 包含一个或多个 0 和1 个。
您可以使用 split() 函数来执行此操作。
`
System.out.println("\nEnter a binary number:");
do
{
Scanner scan1 = new Scanner(System.in);
String binaryNumber = scan1.nextLine();
String str[] = binaryNumber.split("[01]{1,}");
if (str.length > 0)
{
System.out.println("\nInvalid input. Try again.");
}
else
{
System.out.println("\nThe binary number \"" + binaryNumber + "\" is valid.");
break;
}
} while (!b);`
我认为这有帮助
我设法完成了作业,但后来我意识到一个致命的缺陷:我没有让代码接受一串二进制数。我设法让代码按照我想要的方式循环,直到输入二进制数(0 或 1),但我无法弄清楚如何使代码在没有的情况下接受一串二进制数(即:1010)破坏了我创建的循环。
我还将包括说明:1) 要求个人输入二进制数字,以及 2) 设法测试输入是否符合二进制数字系统(仅 0 和 1)允许)。
boolean b = false;
System.out.println("\nEnter a binary number:");
do {
Scanner scan1 = new Scanner(System.in);
int binaryNumber = scan1.nextInt();
if (binaryNumber > 1 || binaryNumber < 0) {
System.out.println("\nInvalid input. Try again.");
} else {
System.out.println("\nThe binary number \"" + binaryNumber + "\" is valid.");
break;
}
} while (!b);
我将如何着手编辑代码以包含一串二进制数字,但仍保持上面的循环和其他细节?还是我必须完全更改代码才能包含并接受二进制字符串?
您可以使用 REGEX [01]+
检查二进制文件,这意味着 0 和 1 的任意组合重复一个或多个。
如果没有匹配则继续直到找到有效的二进制文件并退出循环。
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("\nEnter a binary number:");
do {
String binaryNumber = scanner.nextLine();
if (!binaryNumber.matches("[01]+")) {
System.err.println("Invalid Binary Number Entered! Try Again...");
continue;
}
System.out.println("\nThe binary number \"" + binaryNumber + "\" is valid.");
break;
} while (true);
scanner.close();
}
您可以将输入作为字符串并将其与正则表达式匹配,例如 ^[0-1]+$
将其放入代码中,它将是
boolean b = false;
System.out.println("\nEnter a binary number:");
do
{
Scanner scan1 = new Scanner(System.in);
String binaryNumber = scan1.next();
if (!binaryNumber.matches("^[0-1]+$"))
{
System.out.println("\nInvalid input. Try again.");
}
else
{
System.out.println("\nThe binary number \"" + binaryNumber + "\" is valid.");
break;
}
} while (!b);
}
不要在循环中声明扫描仪对象。对于循环的每次迭代,您都在实例化另一个 Scanner 对象。在循环之上和之外声明并初始化它。
接受字符串形式的输入,然后验证所提供的确实是二进制数这一事实:
Scanner scanner = new Scanner(System.in);
String binaryNumber = "";
while (binaryNumber.equals("")) {
System.out.print("Enter a Binary Number: --> ");
binaryNumber = scanner.nextLine();
if (!binaryNumber.matches("[01]{1,}")) {
System.err.println("Invalid Binary Number Entered! Try Again...");
binaryNumber = "";
}
else {
System.out.println("The binary number \"" + binaryNumber + "\" is valid.");
}
}
if 语句的条件 (!binaryNumber.matches("[01]+")
) 使用 String#matches() method along with a small Regular Expression (RegEx) 来确保(验证)二进制值的字符串表示被提供。如果没有,则通知用户并允许其重试。
使用的正则表达式 ("[01]{1,}"
) 基本上意味着:如果提供的字符串 包含一个或多个 0 和1 个。
您可以使用 split() 函数来执行此操作。 `
System.out.println("\nEnter a binary number:");
do
{
Scanner scan1 = new Scanner(System.in);
String binaryNumber = scan1.nextLine();
String str[] = binaryNumber.split("[01]{1,}");
if (str.length > 0)
{
System.out.println("\nInvalid input. Try again.");
}
else
{
System.out.println("\nThe binary number \"" + binaryNumber + "\" is valid.");
break;
}
} while (!b);`
我认为这有帮助