Java - возникают проблемы с выходом из цикла - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь написать программу 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;
    }

}

}

1 Ответ

0 голосов
/ 19 октября 2018

Добро пожаловать в Stackoverflow.Я не смог воспроизвести вашу проблему (сначала я дал ввод как 1234, а затем как 0010, и он работал нормально).Однако я сделал некоторые изменения в вашем коде, так как ваш последний цикл while бесполезен.Пожалуйста, попробуйте использовать «Отладчик», чтобы определить вашу проблему или опубликовать несколько скриншотов, чтобы доказать вашу проблему.

public static void main(String[] args)
{
    Scanner scan = new Scanner(System.in);

    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();
    }

    String 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();
    }


    int oneCount = 0;

    for (int x = 0; x < input.length(); x++)
    {
        char c = input.charAt(x);
        if (c == '1')
        {
            oneCount++;
        }
    }
    System.out.println("The binary string contains " + oneCount + (oneCount == 1 ? " one." : " ones."));

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...