Trouver toutes les lettres majuscules d'une chaîne de caractères en java

Donc j'essaye de trouver toutes les lettres en majuscules d'une chaîne de la part de l'utilisateur, mais je reçois cette erreur d'exécution:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: 
String index out of range: 4
at java.lang.String.charAt(String.java:686)
at P43.main(P43.java:13)

Je me sens stupide, mais je ne peux pas comprendre cela et oracle même parle de charAt sur la page java.lang.StringIndexOutOfBoundsException

Voici mon code pour trouver les lettres majuscules et de les imprimer:

import java.io.*;
import java.util.*;

public class P43{
   public static void main(String[] args){
      Scanner in = new Scanner(System.in);
      //Uppercase
      String isUp = "";
      System.out.print("Please give a string: ");
      String x = in.next();
      int z = x.length();
      for(int y = 0; y <= z; y++){
         if(Character.isUpperCase(x.charAt(y))){
            char w = x.charAt(y);
            isUp = isUp + w + " ";
         }
      }
      System.out.println("The uppercase characters are " + isUp);
      //Uppercase
   }
}

J'apprécierais vraiment de l'entrée et ou de l'aide.

Le simple fait de mentionner, donner des noms significatifs à votre variable/classe/méthode des noms plutôt que de les nommer x,y,z et w
Certainement. Remarquez que dans ma réponse, j'ai utilisé des identificateurs tels que inputString. utilisation i, j, k pour les index avec les boucles magnétiques, et vous pouvez les utiliser c pour un personnage, mais rien d'autre de lui donner un nom propre.

OriginalL'auteur EvanD | 2012-10-31