Я пытаюсь написать программу Java, в которую пользователь вводит строку, представляющую двоичное число (0 и 1).Программа должна проверить, что ввод является двоичным числом, и если это не так, программа выводит сообщение о том, что число не является допустимым двоичным числом.Если пользовательский ввод приемлем, программа должна посчитать, сколько единиц в этом слове, и вывести число.
Вот что у меня есть, но когда я ввожу строку типа «1234» и получаютретий цикл while повторяет сообщение «Ваш номер может содержать только единицы и нули. Пожалуйста, всегда бинарное значение, содержащее только единицы и нули:», даже если я введу правильную строку, например «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;
}
}
}