我在java中有一个二维数组。
例如,
double count=0;
double[][] arr1 =new double[3][3];
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
arr1[i][j]=count;
count++;
}
}
现在,我想删除i或j值为1的所有元素。
arr1[1][0], arr1[1][1], arr1[1][2], arr[0][1], arr[2][1] ...
我怎样才能做到这一点?
答案 0 :(得分:1)
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
if(i==1 || j==1){
arr1[i][j]=0;
}
}
}
或效率更高:
for(int i=0;i<3;i++){
arr1[i][1]=0;
}
for(int i=0;i<3;i++){
arr1[1][i]=0;
}
答案 1 :(得分:1)
复制到arr2。 如果你有
[1][2][3]
[4][5][6]
[7][8][9]
你会得到
[1][3]
[7][9]
如果你想
[1][-][3]
[-][-][-]
[7][-][9]
见shijima的回答
double[][] arr2 = new double[arr1.length][arr1[0].length];
int ti = 0, tj = 0;
for(int i=0; i<arr1.length - 1; i++) {
if (i > 0)
ti = i+1;
else
ti = i;
for(int j=0; j<arr1[0].length - 1; j++) {
if (j > 0)
tj = j+1;
else
tj = j;
arr2[i][j] = arr1[ti][tj];
}
}
答案 2 :(得分:0)
ArrayList
会让您的生活变得更轻松,因为您可以致电remove(int)
,但如果您坚持使用数组,则可以执行此操作。
double[] tmp = arr1[0];
arr1 = Arrays.copyOfRange(arr1, 1, arr1.length);
arr1[0] = tmp;
答案 3 :(得分:0)
如果i = 1,您可以避免添加任何内容,这样您就不必担心删除任何内容,因为无论如何它都将为空...
double count = 0;
double[][] arr1 = new double[3][3];
outerLoop: for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (i == 1) {
continue outerLoop;
}
arr1[i][j] = count;
count++;
}
}
for (int x = 0; x < 3; x++) {
for (int y = 0; y < 3; y++) {
System.out.println("arr1[" + x + "][" + y + "]=" + arr1[x][y]);
}
}