我正在尝试编写一个java程序,用户可以在其中输入表示二进制数(0和1)的字符串。程序应验证输入是否为二进制数,如果不是,程序将打印一条消息,指出该数不是有效的二进制数。如果用户输入是可接受的,程序应该计算该单词中有多少个1,并输出该计数。
这就是我到目前为止所做的,但是当我输入一个像"1234“这样的字符串并到达第三个while循环时,它只是不断地重新打印消息”您的数字只能包含1和0。请永远保持一个只包含1和0的二进制值:",即使我输入了像"0010“这样的有效字符串。我已经为此绞尽脑汁了几天,所以任何帮助都是非常感谢的。
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String input;
System.out.println("Welcome to the binary scanner!");
System.out.print("Please enter a string in binary fashion: ");
while (!scan.hasNextInt()) {
System.out.println("That's not a binary number...\nPlease enter a binary number");
String temp = scan.nextLine();
}
input = scan.nextLine();
input = input.trim();
while (!input.contains("1")){
System.out.println("Your number does not contain any ones.\nPlease enter a binary number that contains ones.");
input = scan.nextLine();
}
while (input.contains("2") || input.contains("3") || input.contains("4") || input.contains("5") || input.contains("6") || input.contains("7") || input.contains("8") || input.contains("9")){
System.out.println ("Your number can only contain ones and zeros.\nPlease ever a binary value containing only ones and zeros: ");
input = scan.nextLine();
}
while (input.contains("1")){
boolean notOne = false;
int oneCount = 0;
for (int x = 0; x < input.length(); x++){
char c = input.charAt(x);
if (c == '1' || c == '0'){
if (c == '1'){
oneCount++;
notOne = true;
}
}
else {
notOne = false;
}
}System.out.println("The binary string contains " + oneCount + (oneCount == 1 ? " one." : " ones."));
break;
}
}
}
https://stackoverflow.com/questions/52883209
复制相似问题