Saturday, February 10, 2018

(Java) Program ignores Scanner at the point I want to enter a String

I have the following 3 Methods:




  1. Method: Takes a text and splits its words in particular Strings and puts them into a String Array.



    public static String[] generateStringArray(String text) {
    if (text.isEmpty()) {
    throw new IllegalArgumentException(MSG_STRING_EMPTY);

    }

    // split pattern for all non word characters
    return text.trim().split("\\W+");
    }

  2. Method: Counts the amount of Strings in an Array that consist solely out of Upper-Case or Lower-Case Letters.



    public static int countLowerUpperCaseStrings(String[] stringArray) {
    if (stringArray.length == 0) {

    throw new IllegalArgumentException(MSG_ARRAY_LENGTH_ZERO);
    }

    String convertedString;
    int counter = 0;
    char a;
    char b;

    for (int i = 0; i < stringArray.length; i++) {
    a = stringArray[i].charAt(0);

    b = stringArray[i].toLowerCase().charAt(0);

    if (a == b) {
    convertedString = stringArray[i].toLowerCase();
    } else {
    convertedString = stringArray[i].toUpperCase();
    }

    if (stringArray[i].compareTo(convertedString) == 0) {
    counter++;

    }
    }
    return counter;
    }

  3. Method: The actual method, where you enter a text via Scanner and call for the other methods.



    public void numberOfUpperLowerCaseStrings() {
    String text;
    String[] stringArray;


    System.out.println("Enter a text:");
    text = input.nextLine();
    stringArray = Algorithmen.generateStringArray(text);

    System.out.println(Algorithmen.countLowerUpperCaseStrings(stringArray));
    }




Note that Algorithmen is the name of the class where the first two (static) methods are defined.



I tested the first two methods and they work just fine.



Now the problem comes into play, if I call the third method to firstly generate a text through the Scanner.



But somehow, the code just skips the line text = input.nextLine(); and throws the Exception (MSG) String is empty. The text "enter a text:" is executed, directly followed by the exception. But I am not able to enter any text.



if I change input.nextLine(); into input.next(), I am able to enter a text but after that, end up in an endless loop of exceptions.




So why can't I enter a text?



I have another two methods where input.nextLine works just fine.

No comments:

Post a Comment

plot explanation - Why did Peaches&#39; mom hang on the tree? - Movies &amp; TV

In the middle of the movie Ice Age: Continental Drift Peaches' mom asked Peaches to go to sleep. Then, she hung on the tree. This parti...