Сообщить о соответствии всех символов фразы со всеми символами в алфавите

1

У меня есть следующий метод в Java:

void searchPhrase(String[] phrase){
        searchResult = new int[phrase.length];
        int j=0, k=0;
        for (int i=0; i<frase.length;i++)
            if (!phrase[i].equals(alphabet[k])){
                System.out.println("\nLetter "+phrase[i]+" was not found when comparing it to "+alphabet[k]);
                k++;
            }
            else{               
                System.out.println("\nLetter "+phrase[i]+" was found when comparing it to "+alphabet[k]);
                searchResult[j] = i;
                k=0;
            }
    }

У меня есть два массива String, фраза и алфавит. Фраза - любая данная фраза, а алфавит содержит алфавит от А до Я. Мне нужен метод, чтобы получить фразу, скажем: "HELLO STACK". Затем он должен сравнивать каждую букву с алфавитом, например:

H == A? Нет.
H == B? Нет.
...
H == H? да

Затем searchResult [0] = 7, потому что буква H из фразы [i] была равна алфавиту [7]. Теперь, когда он нашел букву H, она должна продолжаться с буквой E и так далее. К сожалению, мой код делает это:

H == A? Нет.
E == B? Нет.
L == C? Нет.
L == D? Нет.
O == E? Нет.
(пустое пространство) == F? Нет.
S == G? Нет.
и он продолжается, пока не завершится фраза "HELLO STACK". Что я могу сделать, чтобы остановить его от перехода на следующую букву, если она не найдена в алфавите? Большое спасибо!

  • 1
    в течение цикла я увидел "frase.length". Это другая переменная?
  • 0
    Почему вы не используете String.indexOf() ?
Показать ещё 3 комментария
Теги:
string
arrays

5 ответов

1
Лучший ответ

Если бы я понял, что вы хотите сделать, код должен быть:

void searchPhrase(String[] phrase){
    searchResult = new int[phrase.length];
    int j=0;
    for (int i=0; i<frase.length;i++){
        for (int k=0; k<alphabet.length;k++){        
            if (!phrase[i].equals(alphabet[k])){
                System.out.println("\nLetter "+phrase[i]+" was not found when comparing it to "+alphabet[k]);
                k++;
            }
            else{               
                System.out.println("\nLetter "+phrase[i]+" was found when comparing it to "+alphabet[k]);
                searchResult[j] = i;
                k=0;
                break;
            }
        }
    }
}

Я не тестировал код, но он должен работать.

  • 0
    Спасибо!!! Это работало очень хорошо, я только удалил k ++ внутри if, потому что алфавит был A, C, F, H ... СПАСИБО !!!
1

Это то, что вы хотите?

void searchPhrase(String[] phrase){
            searchResult = new int[phrase.length];
            int j=0, m=-1, n=-1;
            for (int i=0; i<phrase.length;i++)
            {
              for (int k=0; i<26;i++)
              {
                if (phrase[i].equals(alphabet[k]))
                {
                 searchPhrase[i] = k;    
                 System.out.println("\nLetter "+phrase[i]+" was found when comparing it to"+alphabet[k]);
                }
               }
             }
1

если вы не хотите продолжать, если phrase[n] != alphabet[k] тогда фразе всегда нужно быть "abc.....", потому что если вы используете HELLO STACK первая буква H которая есть != alphabet[0](A).

вы можете использовать вложенный цикл здесь

Ваша фраза - массив? у вас есть несколько фраз? если бы это не была функция

я предпочитаю, чтобы массив алфавита был char[] alphabet

void searchPhrase(String phrase){

 //string length()
 outer:
 for(int x = 0 ; x < phrase.length() ; x++){
     //char length
     inner:
     for(int y = 0 ; y < alphabet.length ; y++){

         if(phrase.charAt(x) == alphabet[y]){
            //alphabet found
         }else{
            //not found
         break outer;
         }
     }
  }
 }
1

Чтобы получить эту логику, используйте другой (вложенный) цикл.

Внешний цикл повторяется над символами фразы (как сделано), а внутренний цикл выполняет итерации символов в алфавите. "Остановить его от перехода на следующую букву" выполняется, когда внутренний цикл (который пересекает алфавит) завершается, потому что он соответствует текущему символу фразы. Затем продолжается следующая итерация внешнего цикла и т.д., Пока фраза не будет повторена.

Использование break (пример кода также показывает использование вложенных циклов) будет полезно, когда/если вы используете if внутри внутреннего цикла. Кроме того, в зависимости от назначения может потребоваться обработать случай, когда символ в фразе не находится в алфавите. Как только задача будет завершена с использованием регулярного цикла, см. Ehanced для циклов, которые могут очистить код, так как ни один индекс не должен быть искажен.

  • 0
    Спасибо! Я сделал это таким образом, и это сработало. Спасибо за презентацию.
  • 0
    @ user3651293 Круто! Удачи в обучении.
1

В рабочем примере используйте массив String для соответствия

public static void searchPhrase(String[] phrase) {
        int[] searchResult = new int[phrase.length];
        String[] alphabet = "abcdefghijklmnopqrstuvwxyz".split("");
        int j = 0;
        for (int i = 0 ; i < phrase.length ; i++)
            for (int k = 0 ; k < alphabet.length ; k++) {
                if (!phrase[i].toLowerCase().equals(alphabet[k])) {
                    System.out.println("\nLetter " + phrase[i] + " was not found when comparing it to " + alphabet[k]);
                } else {
                    System.out.println("\nLetter " + phrase[i] + " was found when comparing it to " + alphabet[k]);
                    searchResult[j] = i;
                    break;
                }
            }
    }

Вывод

Letter H was not found when comparing it to 

Letter H was not found when comparing it to a

Letter H was not found when comparing it to b

Letter H was not found when comparing it to c

Letter H was not found when comparing it to d

Letter H was not found when comparing it to e

Letter H was not found when comparing it to f

Letter H was not found when comparing it to g

Letter H ** was found when comparing it to ** h

Letter E was not found when comparing it to 

Letter E was not found when comparing it to a

Letter E was not found when comparing it to b

Letter E was not found when comparing it to c

Letter E was not found when comparing it to d

Letter E ** was found when comparing it to ** e

Letter L was not found when comparing it to 

Letter L was not found when comparing it to a

Letter L was not found when comparing it to b

Letter L was not found when comparing it to c

Letter L was not found when comparing it to d

Letter L was not found when comparing it to e

Letter L was not found when comparing it to f

Letter L was not found when comparing it to g

Letter L was not found when comparing it to h

Letter L was not found when comparing it to i

Letter L was not found when comparing it to j

Letter L was not found when comparing it to k

Letter L ** was found when comparing it to ** l

Letter L was not found when comparing it to 

Letter L was not found when comparing it to a

Letter L was not found when comparing it to b

Letter L was not found when comparing it to c

Letter L was not found when comparing it to d

Letter L was not found when comparing it to e

Letter L was not found when comparing it to f

Letter L was not found when comparing it to g

Letter L was not found when comparing it to h

Letter L was not found when comparing it to i

Letter L was not found when comparing it to j

Letter L was not found when comparing it to k

Letter L ** was found when comparing it to ** l

Letter O was not found when comparing it to 

Letter O was not found when comparing it to a

Letter O was not found when comparing it to b

Letter O was not found when comparing it to c

Letter O was not found when comparing it to d

Letter O was not found when comparing it to e

Letter O was not found when comparing it to f

Letter O was not found when comparing it to g

Letter O was not found when comparing it to h

Letter O was not found when comparing it to i

Letter O was not found when comparing it to j

Letter O was not found when comparing it to k

Letter O was not found when comparing it to l

Letter O was not found when comparing it to m

Letter O was not found when comparing it to n

Letter O ** was found when comparing it to ** o

Letter S was not found when comparing it to 

Letter S was not found when comparing it to a

Letter S was not found when comparing it to b

Letter S was not found when comparing it to c

Letter S was not found when comparing it to d

Letter S was not found when comparing it to e

Letter S was not found when comparing it to f

Letter S was not found when comparing it to g

Letter S was not found when comparing it to h

Letter S was not found when comparing it to i

Letter S was not found when comparing it to j

Letter S was not found when comparing it to k

Letter S was not found when comparing it to l

Letter S was not found when comparing it to m

Letter S was not found when comparing it to n

Letter S was not found when comparing it to o

Letter S was not found when comparing it to p

Letter S was not found when comparing it to q

Letter S was not found when comparing it to r

Letter S ** was found when comparing it to ** s

Letter T was not found when comparing it to 

Letter T was not found when comparing it to a

Letter T was not found when comparing it to b

Letter T was not found when comparing it to c

Letter T was not found when comparing it to d

Letter T was not found when comparing it to e

Letter T was not found when comparing it to f

Letter T was not found when comparing it to g

Letter T was not found when comparing it to h

Letter T was not found when comparing it to i

Letter T was not found when comparing it to j

Letter T was not found when comparing it to k

Letter T was not found when comparing it to l

Letter T was not found when comparing it to m

Letter T was not found when comparing it to n

Letter T was not found when comparing it to o

Letter T was not found when comparing it to p

Letter T was not found when comparing it to q

Letter T was not found when comparing it to r

Letter T was not found when comparing it to s

Letter T ** was found when comparing it to ** t

Letter A was not found when comparing it to 

Letter A ** was found when comparing it to ** a

Letter C was not found when comparing it to 

Letter C was not found when comparing it to a

Letter C was not found when comparing it to b

Letter C ** was found when comparing it to ** c

Letter K was not found when comparing it to 

Letter K was not found when comparing it to a

Letter K was not found when comparing it to b

Letter K was not found when comparing it to c

Letter K was not found when comparing it to d

Letter K was not found when comparing it to e

Letter K was not found when comparing it to f

Letter K was not found when comparing it to g

Letter K was not found when comparing it to h

Letter K was not found when comparing it to i

Letter K was not found when comparing it to j

Letter K ** was found when comparing it to ** k
  • 0
    @ user2864740 сделано, удален вывод
  • 0
    @ user2864740 не знаю, горячий пост вывод
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню