【发布时间】:2021-08-03 20:54:13
【问题描述】:
我应该找到一种方法来确定一个单词是否以对角线(从左上角到右下角)出现在二维数组中。
我的方法:static boolean findText (...) 在这种情况下有效,因为 LEGO 有 4 个字母,但当然这不是你想要的样子,它也应该能够工作更长时间和较短的单词。
我怎样才能做一个重复if (texts[k][i] == searchText[k]) 的循环,因为searchText 很长(所以基本上是searchText.length)?不会弄乱目前运行良好的另一个循环。
class FindText {
public static void main(String[] args) {
char[][] textField = {
{'a', 'b', 'c', 'd', 'L', 'e', 'f', 'g', 'x'},
{'h', 'i', 'j', 'k', 'l', 'E', 'm', 'n', 'a', 'b'},
{'o', 'p', 'q', 'r', 's', 't', 'G', 'u'},
{'v', 'w', 'x', 'y', 'z', 'a', 'b', 'O', 'y'},
{},
null};
char[] searchText = {'L', 'E', 'G', 'O'};
Out.print("\nText-Feld:\n--------------------------------\n");
print(textField);
Out.print("\n--------------------------------\n");
print(searchText);
if (findText(textField, searchText)) {
Out.print("\nkommt vor!");
} else {
Out.print("\nkommt nicht vor!");
}
} // end main
static boolean findText(char[][] texts, char[] searchText) {
if (texts == null) return false;
int k = 0;
for (int i = 0; i < texts.length; i++) {
if (texts[k][i] == searchText[k]) {
if (texts[k + 1][i + 1] == searchText[k + 1]) {
if (texts[k + 2][i + 2] == searchText[k + 2]) {
if (texts[k + 3][i + 3] == searchText[k + 3]) {
return true;
}
}
}
}
}
return false;
} // end findText()
static void print(char[][] texts) {
if (texts == null) return;
for (int i = 0; i < texts.length; i++) {
if (texts[i] != null) print(texts[i]);
Out.print("\n");
}
} // end printTexts()
static void print(char[] text) {
if (text == null) return;
for (int i = 0; i < text.length; i++) {
Out.print(text[i]);
}
} // end printText()
} // end class FindText
【问题讨论】:
标签: java arrays loops multidimensional-array