Попытка прочитать 2D-массив для значения и отобразить его местоположение. Возникла проблема с доставкой сообщения, когда оно не найдено

Я читаю 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;
                                
                                
      }                          
    }
  }

Когда он не может найти номер, он просто не печатает ничего лучше, чем ошибку, но я не могу найти способ отобразить эту путаницу в программе.

Я попытался подсчитать, сколько раз это число появляется, пока не останется ни одного, чтобы затем отобразить это сообщение, когда оно равно общему количеству раз, когда это число появляется. Этот стиль не работает странно.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
21
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете попробовать создать флаг и установить значение 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");
}

Благодарю вас! Это было быстрое и простое решение.

programmingLearn 22.03.2022 15:25

Вы можете создать метод для поиска числа, и если он найден, вы можете вернуть объект индекса пользовательского класса со строкой и столбцом, а если он не найден, вы можете вернуть нуль.

и поэтому, если этот метод возвращает значение 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;
    }

}

Другие вопросы по теме