Переключатель не работает, если работает иначе - почему? Morse-английский

Я работаю над переводчиком морзе-английского. У меня есть программа (Исходный код 2 ниже), которая работает, но я спрашиваю дополнительно. Когда я использую конструкцию переключателя (исходный код 1), она не работает (не позволяет пользователю вводить английский или азбуку Морзе *), но когда я использую конструкцию if-else (исходный код 2), она работает **! Это почему?

* Исходный код 1 Например, вывод будет:

Enter your choice: 
1. 1 for English -> Morse Code 
2. 2 for Morse Code -> English
1
Enter an English sentence.
  • Останавливает выполнение здесь - не позволяет пользователю вводить. -

** Исходный код 2 Например, результат будет:

Enter your choice: 
1. 1 for English -> Morse Code 
2. 2 for Morse Code -> English
1
Enter Morse Code. | for Morse stands for a blank space in English, and a blank space for Morse stands in between each letter/digit in English.
.- -... | -.-
ab c

Исходный код 1:

// Import Scanner.
import java.util.Scanner;

public class junk
{

    public static void main(String[] args) {

        // Define arrays.
        char[] english = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', ' ' };
        String[] morseCode = { ".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--..", "|" };

        // Prompt user for input.
        System.out.println("Enter your choice: \n1. 1 for English -> Morse Code \n2. 2 for Morse Code -> English");
        Scanner input = new Scanner(System.in); // Create new Scanner.
        int inputUser = input.nextInt();

        // Switch statement.
        switch (inputUser)
        {
            case 1:
            {
                // If user enters 1 (English to Morse Code).
                // Prompt user for input.
                System.out.println("Enter an English sentence.");
                String toMorseCode = input.nextLine();
                for (int x = 0; x < toMorseCode.length(); x++)
                {
                    for (int y = 0; y < english.length; y++)
                    {
                        if (english[y] == toMorseCode.charAt(x))
                            System.out.print(morseCode[y] + " ");
                    }
                }
                break;
            }

            case 2:
            {
                // If user enters 2 (Morse Code to English).
                // Prompt user for input.
                System.out.println("Enter Morse Code. | for Morse stands for a blank space in English, and a blank space for Morse stands in between each letter/digit in English.");
                String toEnglish = input.nextLine();

                // Split into toEnglishParts (with space).
                String[] toEnglishParts = toEnglish.split(" ");
                for (int p = 0; p < toEnglishParts.length; p++)
                {
                    for (int y = 0; y < morseCode.length; y++)
                    {
                        // Matches morseCode with toEnglishParts.
                        if (morseCode[y].equals(toEnglishParts[p]))
                                System.out.print(english[y]);
                    }
                }
                break;
            }

            default:
                // If user does not enter 1 or 2.
                System.out.println("Invalid input.")
        }
    }
}

Исходный код 2:

// Import Scanner.
import java.util.Scanner;

public class junk
{

    public static void main(String[] args) {

        // Define arrays.
        char[] english = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', ' ' };
        String[] morseCode = { ".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--..", "|" };

        // Prompt user for input.
        System.out.println("Enter your choice: \n1. A for English -> Morse Code \n2. B for Morse Code -> English");
        Scanner input = new Scanner(System.in); // Create new Scanner.
        String inputUser = input.nextLine();

        // if statement for translating to Morse Code.
        if (inputUser.equalsIgnoreCase("A")) {
            System.out.println("Enter an English sentence.");
            String toMorseCode = input.nextLine();
            for (int x = 0; x < toMorseCode.length(); x++)
            {
                for (int y = 0; y < english.length; y++)
                {
                    if (english[y] == toMorseCode.charAt(x))
                        System.out.print(morseCode[y] + " ");
                }
            }
        }

        // if statement for translating to English.
        else if (inputUser.equalsIgnoreCase("B")) {
            System.out.println("Enter Morse Code. | for Morse stands for a blank space in English, and a blank space for Morse stands in between each letter/digit in English.");
            String toEnglish = input.nextLine();
            String[] toEnglishParts = toEnglish.split(" ");
            for (int p = 0; p < toEnglishParts.length; p++) {
                for (int y = 0; y < morseCode.length; y++) {
                    if (morseCode[y].equals(toEnglishParts[p]))
                        System.out.print(english[y]);
                }    
            }    
        }

        // else - user does not type in A or B.
        else
            System.out.println("Invalid input.");
    }
}

0 ответов

Другие вопросы по тегам