我想根据规则将一些整数转换为*。我可以确定它应该转换的矩阵中的哪些位置,但不能转换它。 我给程序第一个矩阵,它应该返回第二个矩阵:
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;,表达式无效
答案 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;