将int更改为矩阵

时间:2018-05-03 20:25:26

标签: java string int

我想根据规则将一些整数转换为*。我可以确定它应该转换的矩阵中的哪些位置,但不能转换它。 我给程序第一个矩阵,它应该返回第二个矩阵:

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] = *;
    }
  }
}

编辑: 矩阵是int类型。我可以确定矩阵中的哪些位置应该被转换,但是转换本身不起作用。

我收到此错误:错误:令牌上的语法错误&#34; *&#34;,表达式无效

4 个答案:

答案 0 :(得分:1)

您可以离开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();
    }
}

答案 1 :(得分:1)

您可以使用Integer类型的矩阵代替int,然后使用*

标记null单元格

然后在使用null

打印或使用矩阵显示*值时

答案 2 :(得分:0)

在int矩阵中,您无法输入字符或符号(例如&#39; *&#39;)

最简单的方法是更改​​矩阵的类型。你应该使用char而不是int。

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

如果您想使用矩阵中的元素来表示公式,可以使用

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

使用此代码,它将返回数字,如果它没有数值,则返回-1

您可以查看此链接以获取getNumericValue 点击here

答案 3 :(得分:0)

你应该创建一个与矩阵一样大的新字符串数组。

然后通过矩阵运行并添加数字或将其更改为字符串,如下所示:

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;