Java 删除矩阵中的整数
我想去掉我方法中的零。有人知道怎么做吗?我是否必须将矩阵转换成字符串,或者我可以通过某种方式删除整数矩阵中的元素 来自此:Java 删除矩阵中的整数,java,matrix,multidimensional-array,Java,Matrix,Multidimensional Array,我想去掉我方法中的零。有人知道怎么做吗?我是否必须将矩阵转换成字符串,或者我可以通过某种方式删除整数矩阵中的元素 来自此: 1 0 0 0 0 1 1 0 0 0 1 2 1 0 0 1 3 3 1 0 1 4 6 4 1 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 对此: 1 0 0 0 0 1 1 0 0 0 1 2 1 0 0 1 3 3 1 0 1 4 6 4 1 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 公共静
1 0 0 0 0
1 1 0 0 0
1 2 1 0 0
1 3 3 1 0
1 4 6 4 1
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
对此:
1 0 0 0 0
1 1 0 0 0
1 2 1 0 0
1 3 3 1 0
1 4 6 4 1
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
公共静态void writeElement(int[]m){
int[][]b=新int[m.length][m.length];
java中的for(int row=0;row数组有一个固定的结构。一旦创建,就不能动态删除/添加插槽。如果要这样做,就必须使用java.util.arrayList之类的集合元素
或者,您必须创建一个新数组;并以不同的方式填充行。因此,您不必总是使用相同的宽度,而是只为非零值分配空间。然后,您将迭代整个矩阵,并仅复制非零值
但当然:处理这样一个矩阵需要非常精确;因为每个行数组可能有不同的长度
选项1(使用列表)的最大优点是,您可以在创建时进入并删除/添加元素。缺点是:集合仅适用于引用类型;在这种情况下为:整数。这意味着会有一点内存开销
选项2要求显式创建新数组;如前所述:精确处理长度。您可以使数组字符串
类型,允许您在希望将元素“删除”时将其设置为空字符串(”
)。然后,当您请求元素时,您可以有逻辑忽略任何)
s,只取数字。当然,这意味着您需要调用Integer.valueOf(b[/*indexOne*/][/*indexTwo*/])
将条目强制转换为int
类型,只要您想检索它们
此外,如果要将元素设置为int
,而不是字符串,则需要以类似的方式使用String.valueOf(/*anInt*/)
我必须把矩阵转换成字符串吗
当您使用System.out.println()时,您已经这样做了。您只需更改为该方法提供的内容
从你拥有的开始:
for(int i=0; i<b.length; i++){
for(int j=0; j<b[i].length; j++){
System.out.print(b[i][j] + " ");//where you print results out
}
System.out.println();
}
修改原始代码以调用该方法
for(int i=0; i<b.length; i++){
for(int j=0; j<b[i].length; j++){
System.out.print(getPrintValueForMatrix(b[i][j]));//only this line changed
}
System.out.println();
}
你到底想做什么?你是想不打印0
s,还是真的想修改m
,用较短的数组替换尾随的零元素数组?@rabbitguy它不是一个真正的2D数组,它只是一个int数组。并非所有数组的长度都必须相同。它是完美的y legal的值类似于int[]m={{{1}、{1,2}、{1,2,3};
我想创建一个n*n矩阵,并打印它而不带零。是的,我只想不打印它们。但是由于第一行0用于计算矩阵的其余部分,我想我必须在创建了带零的矩阵后将其删除。对不起,我在java中是一个巨大的noob!非常感谢,伙计!工作正常出局罚款:)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1