Как входящие значения привязать к индексам массива?

На вход программы с консоли поступают буквенные значения. Их нужно перевести в цифры, при условии что а = 0. Сколько на вход поступает букв столько в итоге должно быть и цифр. Вот моя реализация, но при вводе данных происходит переполнение массива. Что я делаю не так? И как это правильно сделать?

//Вывести зашифрованное в буквах числовое значение. Где а = 0

public class TransformingStringToNumbers {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Введите буквенное значение");
        String inputCharacters = reader.readLine();
        System.out.println(toTransform(inputCharacters));
    }

    public static StringBuilder toTransform(String inputCharacters) {
        //char [] exampleArray = {'a','b','c','d','e','f','j','h','i','g'};
        CharSequence a = "a";
        CharSequence b = "b";
        CharSequence c = "c";
        CharSequence d = "d";
        CharSequence e = "e";
        CharSequence f = "f";
        CharSequence j = "j";
        CharSequence h = "h";
        CharSequence i = "i";
        CharSequence g = "g";
        int index = 0;
        char[] charArray = inputCharacters.toCharArray();
        char [] result = new char[charArray.length];
        for (; index < charArray.length; index++) {
            if(inputCharacters.contains(a)) {
                result[0] = '0';
            }else if (inputCharacters.contains(b)){
                result[1] = '1';
            }else  if(inputCharacters.contains(c)){
                result[2] = '2';
            }else  if (inputCharacters.contains(d)){
                result[3] = '3';
            }else if(inputCharacters.contains(e)){
                result[4] = '4';
            }else if (inputCharacters.contains(f)){
                result[5] = '5';
            }else if(inputCharacters.contains(j)){
                result[6] = '6';
            }else if (inputCharacters.contains(h)){
                result[7] = '7';
            }else if (inputCharacters.contains(i)){
                result[8] = '8';
            }else if (inputCharacters.contains(g)){
                result[9] = '9';
            }

        }

        return new StringBuilder().append(result[index]);
    }

}

Ответы (2 шт):

Автор решения: AlekseiGaile
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class TransformingStringToNumbers {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Введите буквенное значение");
        String inputCharacters = reader.readLine();
        System.out.println(toTransform(inputCharacters));
    }

    public static StringBuilder toTransform(String inputCharacters) {
        int CHAR_A = 97;
        char[] charArray = inputCharacters.toCharArray();
        StringBuilder stringBuilder = new StringBuilder();
        for (char value : charArray) {
            stringBuilder.append(value - CHAR_A);
            inputCharacters = inputCharacters.substring(1);
        }
        return stringBuilder;
    }
}
→ Ссылка
Автор решения: Alexander Chernin

Если судить по-коду и исправить некоторые ошибки, то ваш код можно существенно сократить (думаю, даже больше, поскольку я не большой знаток Java):

String inputCharacters = "<Строка на вход>";

// Символьная последовательность, можно сказать маска
CharSequence maskSeq = "abcdefjhig";

// массив сигналов, что символ из маски найден во входной строке
char[] result = new char[str.length()];

// Бежим по символам маски
for(int i = 0; i < maskSeq.length() -1; i++) {
    // Если входная строка содержит необходимый символ, то
    // в соответствующую позицию 
    if( inputCharacters.contains(String.valueOf(charSeq.charAt(i))) )
        result[i] = (char)i;
}
→ Ссылка