所以我有一个接收String [] []和String(word)的方法。该方法必须从2dArray中查找单词,并且应该在同一行中显示其他单词之一。此外,我需要忽略(不显示)和计数(++)同一行中的空白点。我想知道为什么我的计数器是循环的,它不会让我忽略那些空格。
public static void main(String[] args) {
String[][] array2d = {{"joe", "slim", "ed", "george"},
{"soto", "", "", "" },
{"billy", "sanchez", "carlos", "fernando"}};
sort(array2d, "soto");
}
public static void sort(String[][] matrix, String word) {
int counterForArrayLength = 0;
boolean random = true;
boolean exit = true;
String optionFromUser = "";
do {
random = true;
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[0].length; j++) {
if (matrix[i][j].equals(word)) {
for (int k = 0; k < matrix[0].length; k++) {
while (random) {
String randomWord = matrix[i][(int) (Math.random() * matrix[0].length)];
String testRandom = "" + randomWord;
if (randomWord.equals(word)) {
random = true;
} else {
if (randomWord.equals("")) {
counterForArrayLength++;
System.out.println("" + counterForArrayLength);
} else {
JOptionPane.showMessageDialog(null, randomWord);
optionFromUser = JOptionPane.showInputDialog("Desea obtener otro sinonimo? si/no \n Digite salir si asi lo desea.");
optionFromUser = optionFromUser.toLowerCase();
if (optionFromUser.equals("si") || optionFromUser.equals("s")) {
random = true;
} else {
random = false;
}
}
}
}
}
}
}
}
if (optionFromUser.equals("salir")) {
exit = false;
} else {
word = JOptionPane.showInputDialog("Digite otra palabra");
}
} while (exit);
}
运行:
1
2
3
4
5
6
7
8
9
10
等
答案 0 :(得分:0)
您的代码示例缺少基本信息。但是,内部循环:
while(random)
{
// . . .
}
可以永远运行,因为您不保证将随机变量设置为false。
如果您使用不属于该数组的单词调用该方法,它将仅 。
此外,如果你用word = "soto"
调用它,那么机会是100%,永远不会离开循环,因为在4个单词中你找到了一个,其他3个是空的。