Я читаю 2D-массив, и когда он отображает каждый экземпляр целевого целого числа для поиска, я не могу найти способ для вложенного цикла for отображать сообщение Number not found
или что-то в этом роде.
2D-массив имеет 8 строк и 9 столбцов.
Вот программа ниже:
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
if (arr[i][j] == intRequest){
System.out.println("Your number is in Row " + (i) + " and Column " + (j) + ".");
arr[i][j] = 0;
i = 10;
break;
}
}
}
Когда он не может найти номер, он просто не печатает ничего лучше, чем ошибку, но я не могу найти способ отобразить эту путаницу в программе.
Я попытался подсчитать, сколько раз это число появляется, пока не останется ни одного, чтобы затем отобразить это сообщение, когда оно равно общему количеству раз, когда это число появляется. Этот стиль не работает странно.
Вы можете попробовать создать флаг и установить значение true, как только найдете свой номер. Если к концу цикла оно все еще ложно, значит, вы не нашли число. Я не тестировал код, но он должен выглядеть примерно так.
boolean found = false;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
if (arr[i][j] == intRequest) {
System.out.println("Your number is in Row " + (i) + " and Column " + (j) + ".");
arr[i][j] = 0;
found = true;
break;
}
}
}
if (!found) {
System.out.println("Your number wasn't found");
}
Вы можете создать метод для поиска числа, и если он найден, вы можете вернуть объект индекса пользовательского класса со строкой и столбцом, а если он не найден, вы можете вернуть нуль.
и поэтому, если этот метод возвращает значение null, вы можете знать, что число не найдено, и вы можете легко распечатать результат.
Создание методов и классов для возврата индекса является более чистым, чем печать результатов в методе, так как завтра вы сможете повторно использовать метод в нескольких местах.
public void printSearchResult() {
int[][] input2DArray = new int[0][0]; // You need to create input data here
int numberToFind = 0; // pass your number to search
Index index = findIndexOfGivenNumberIn2DArray(input2DArray, numberToFind);
if (index == null) {
System.out.println("Your number wasn't found");
} else {
input2DArray[index.getRow()][index.getColumn()] = 0;
System.out.println("Your number is in Row " + index.getRow() + " and Column " + index.getColumn() + ".");
}
}
private Index findIndexOfGivenNumberIn2DArray(int arr[][], int numberToFind) {
Index index = null;
for (int row = 0; row < arr.length; row++) {
for (int column = 0; column < arr[row].length; column++) {
if (arr[row][column] == numberToFind) {
index = new Index(row, column);
return index;
}
}
}
return index;
}
private static class Index {
private int row;
private int column;
public Index(int row, int column) {
this.row = row;
this.column = column;
}
public int getRow() {
return row;
}
public int getColumn() {
return column;
}
}
Благодарю вас! Это было быстрое и простое решение.