Приятно осознавать себя единственным, у кого не проходит решение, но -
public static String decode(StringReader reader, int key) throws IOException {
    BufferedReader br = new BufferedReader(reader);
    StringBuilder sb = new StringBuilder();
    int a=0;
        while (br.ready()) {
            a = br.read();
            if (a == -1) break;
            if (a != 32) {
                a = a + key; }
            sb.append((char) a); }
    return sb.toString();}
Не понимаю, при каких заданных условиях возвращенный объект будет null ? Пробовал через try-catch, if как-то обозначать, но не доходит.