Замените int на строку в матрице - PullRequest
0 голосов
/ 03 мая 2018

Я хочу преобразовать некоторые целые числа в * на основе правила. Я могу определить, какие места в матрице он должен конвертировать, но не могу его конвертировать. Я даю программе первую матрицу, и она должна вернуть вторую матрицу:

5 4 5 5 8
5 4 6 4 1
3 4 5 4 6
7 8 4 3 6

5 4 5 5 *
5 4 * 4 1
3 4 5 4 6
7 * 4 3 6

мой код такой:

for(int i=1; i<r-1; i++) {
  for(int a=1; a<c-1; a++){
    if(matrix[i-1][a] < matrix[r][a] && matrix[i+1][a] < matrix[r][a] && matrix[i][a-1] < matrix[r][a] && 
       matrix[i][a+1] < matrix[r][a]) {
      matrix[r][a] = *;
    }
  }
}

Edit: Матрица имеет тип int. Я могу определить, какие местоположения в матрице следует преобразовать, однако само преобразование не работает.

Я получаю эту ошибку: Ошибка: синтаксическая ошибка на токене "*", неверное выражение

Ответы [ 4 ]

0 голосов
/ 04 мая 2018

Вы должны создать новый массив строк размером с вашу матрицу.

затем запустите через вашу матрицу и либо добавьте число, либо измените его на строку, например:

public String[] convert(int[] matrix,int rule) {
    String[][] arr = new String[matrix.length][matrix[0].length];
    for(int i = 0;i<matrix.length;i++) {
        for(int j = 0; j<matrix[i].length;j++) {
            if(matrix[i][j] == rule)
                arr[i][j] = "*";
            else
               arr[i][j] = String.valueOf(matrix[i][j]);
    return arr;
0 голосов
/ 03 мая 2018

вы можете использовать матрицу типа Integer вместо int, а затем пометить ячейку * с null

Затем при печати или использовании матрицы показывают null значения с *

0 голосов
/ 04 мая 2018

В матрице int вы не можете помещать символы или символы (например, '*')

Самое простое, что нужно сделать, это изменить тип матрицы. Вы должны использовать char вместо int.

  char[][] matrix = new char[r][c];

Если вы хотите использовать элемент из матрицы для уравнений, вы можете использовать

Character.getNumericValue(matrix[i][j]);

С этим кодом он вернет число, а если он не имеет числового значения, он вернет -1

Вы можете проверить эту ссылку для getNumericValue нажмите здесь

0 голосов
/ 03 мая 2018

Вы можете оставить int[][] matrix, и, например, пометьте * ячейки недопустимым номером (например, Integer.MAX_VALUE). И когда вы печатаете или используете эту матрицу, сделайте следующее: System.out.print(matrix[i][k] != Integer.MAX_VALUE ? matrix[i][k] : '*')

public static void main(String... args) {
    int[][] matrix = new int[5][5];
    modifyMatrix(matrix);
    print(matrix);
}

public static void modifyMatrix(int[][] matrix) {
    for (int row = 0; row < matrix.length; row++)
        for (int col = 0; col < matrix[row].length; col++)
            if (isStar(row, col, matrix))
                matrix[row][col] = Integer.MAX_VALUE;
}

private static boolean isStar(int row, int col, int[][] matrix) {
    // TODO your condition to place a '*'
    return false;
}

private static void print(int[][] matrix) {
    for (int row = 0; row < matrix.length; row++) {
        for (int col = 0, max = matrix[row].length; col < msx; col++) {
            System.out.print(matrix[row][col] != Integer.MAX_VALUE ? matrix[row][col] : '*');
            System.out.println(col != max - 1 ? ' ' : '\0');
        }
        System.out.println();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...