Finding all uppercase letters of a string in java

With Java 8 you can also use lambdas. Convert the String into a IntStream, use a filter to get the uppercase characters only and create a new String by appending the filtered characters to a StringBuilder:

Scanner in = new Scanner(System.in);
System.out.print("Please give a string: ");
//Uppercase
String isUp = in.next()
        .chars()
        .filter(Character::isUpperCase)
        .collect(StringBuilder::new, // supplier
                StringBuilder::appendCodePoint, // accumulator
                StringBuilder::append) // combiner
        .toString();
System.out.println("The uppercase characters are " + isUp);
//Uppercase

Inspired by:

  • Adam Bien - Streaming A String
  • Simplest way to print anIntStream as a String

The array index out of bounds is due to the for loop not terminating on length - 1, it is terminating on length Most iterating for loops should be in the form:

for (int i = 0; i < array.length; i++) {
    // access array[i];
}

It's the same with a string.

Perhaps a cleaner way would be:

String inputString; // get user input

String outputString = "";

for (int i = 0; i < inputString.length; i++) {
    c = inputString.charAt(i);
    outputString += Character.isUpperCase(c) ? c + " " : ""; 
}
System.out.println(outputString);

Edit: Forgot String Doesn't implement Iterable<Character>, silly Java.


for(int y = 0; y <= z; y++){

should be

for(int y = 0; y < z; y++){

Remember array index starts from ZERO.

String length returns

the number of 16-bit Unicode characters in the string

Because loop started from ZERO, loop should terminate at length-1.