You need to resize your arrays if you plan on using a primitive array. This requires manually allocating a new array size and copying the existing data into the new array and discarding the original. The easier solution is to use an ArrayList as a collection, or a Hashtable to associate name => grades (Hashtable<String, ArrayList<Integer>>). That only works if the 'name' is unique.
Printf versus println is really irrelevant. The only difference is that printf requires \n to be added for linefeeds.