Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 删除矩阵中的整数_Java_Matrix_Multidimensional Array - Fatal编程技术网

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