У меня есть следующий метод в 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". Что я могу сделать, чтобы остановить его от перехода на следующую букву, если она не найдена в алфавите? Большое спасибо!
Если бы я понял, что вы хотите сделать, код должен быть:
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;
}
}
}
}
Я не тестировал код, но он должен работать.
Это то, что вы хотите?
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]);
}
}
}
если вы не хотите продолжать, если 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;
}
}
}
}
Чтобы получить эту логику, используйте другой (вложенный) цикл.
Внешний цикл повторяется над символами фразы (как сделано), а внутренний цикл выполняет итерации символов в алфавите. "Остановить его от перехода на следующую букву" выполняется, когда внутренний цикл (который пересекает алфавит) завершается, потому что он соответствует текущему символу фразы. Затем продолжается следующая итерация внешнего цикла и т.д., Пока фраза не будет повторена.
Использование break
(пример кода также показывает использование вложенных циклов) будет полезно, когда/если вы используете if
внутри внутреннего цикла. Кроме того, в зависимости от назначения может потребоваться обработать случай, когда символ в фразе не находится в алфавите. Как только задача будет завершена с использованием регулярного цикла, см. Ehanced для циклов, которые могут очистить код, так как ни один индекс не должен быть искажен.
В рабочем примере используйте массив 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
String.indexOf()
?