Как заменить строковую последовательность на входе, если она содержит что-то из массива элементом из массива? - PullRequest
0 голосов
/ 23 марта 2020

Я знаю, что сегодняшний вопрос немного сложен, но вот объяснение:

Я работаю над небольшой программой для своего учителя, где я должен выяснить, если вход, что я написал в консоль содержит следующие строки: https://pastebin.com/MiKUru0y. Затем я должен заменить их правильными формами химических элементов и, наконец, записать это в консоль.

Например:

Если ввод был - kofola, вывод: KOFOLa

Или, если вход был - AGATYAM, вывод: AgAtYAm.

Так что если a.toLowerCase () содержал что-то из String [] elements.toLowerCase (), я должен заменить это словом из String [] elements.

Я сам написал код, но просто не знаю, как его правильно заменить.

public class converter {
    public static void main(String[] args) throws IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        String[] elements = {"Ac", "Ag", "Al", "Am", "Ar", "As", "At", "Au", "B", "Ba", "Be", "Bh", "Bi", "Bk", "Br", "C", "Ca", "Cd", "Ce", "Cf", "Cl", "Cm", "Cn", "Co", "Cr", "Cs", "Cu", "Db", "Ds", "Dy", "Er", "Es", "Eu", "F", "Fe", "Fl", "Fm", "Fr", "Ga", "Gd", "Ge", "H", "He", "Hf", "Hg", "Ho", "Hs", "I", "In", "Ir", "K", "Kr", "La", "Li", "Lr", "Lu", "Lv", "Md", "Mg", "Mn", "Mo", "Mt", "N", "Na", "Nb", "Nd", "Ne", "Ni", "No", "Np", "O", "Os", "P", "Pa", "Pb", "Pd", "Pm", "Po", "Pr", "Pt", "Pu", "Ra", "Rb", "Re", "Rf", "Rg", "Rh", "Rn", "Ru", "S", "Sb", "Sc", "Se", "Sg", "Si", "Sm", "Sn", "Sr", "Ta", "Tb", "Tc", "Te", "Th", "Ti", "Tl", "Tm", "U", "Uuo", "Uup", "Uus", "Uut", "V", "W", "Xe", "Y", "Yb", "Zn", "Zr"};
        String a=in.readLine();
        int p=0;

        for(int i =0; i<elements.length;i++){
              if(a.toLowerCase().contains(elements[i].toLowerCase())){
            }
        }
        System.out.println(a);
    }
}

Если на входе нет слова из массива, напишите «не может заменить».

Спасибо за помощь.

1 Ответ

1 голос
/ 23 марта 2020

Попробуйте что-то вроде этого:

        boolean found = false;

        ...

        for () {
            if (a.toLowerCase().contains(elements[i].toLowerCase())) {
                int idx = a.toLowerCase().indexOf(elements[i].toLowerCase());
                if (idx != -1) {
                    String replace = a.substring(idx, idx+elements[i].length());
                    a = a.replace(replace, elements[i]);
                    found = true;
                }
            }
         }

         ...

         if (!found) {
             System.out.println("can't replace");
         } else {
              System.out.println(a);
         }

Я не проверял все случаи, но это должно приблизить вас.

...