我有这个数组:
String[][] hej = {{"9.8", "0", "hi", "0"}, {"0", "3.4", "yes", "no"}};
我想创建一个没有全零的新数组。
我开始创建一个新数组:
String[][] zero = new String[hej.length][hej[0].length];
我试图只用这个for循环插入非零的元素:
for(int c = 0; c < zero.length; c++) {
int i = 0;
if(hej[i][c] != "0") {
zero[i][c] = hej[i][c];
但它不起作用,我无法理解为什么。
如果我在没有for循环的情况下这样做,就像这样: `if(hej [0] [0]!=“0”) 零[0] [0] = hej [0] [0];
if(hej[0][1] != "0")
zero[0][1] = hej[0][1];
if(hej[0][2] != "0")
zero[0][2] = hej[0][2];
if(hej[0][3] != "0")
zero[0][3] = hej[0][3];`
但是我仍然不知道如何在没有删除零点的情况下缩短阵列。
任何能帮助我理解为什么我的for循环不起作用的人以及如何让for循环遍历整个[] []数组?
任何可以帮助我了解如何创建一个没有零点的新动态数组的人?
谢谢!
答案 0 :(得分:0)
任何可以帮助我理解为什么我的for循环不起作用以及如何工作的人 我可以让for循环遍历整个[] []数组吗?
您必须使用两个循环(如for inside a for loop
)迭代二维数组,如下所示
public static void eliminateZerosWithStaticArray() throws Exception {
String[][] hej = {{"9.8", "0", "hi", "0"}, {"0", "3.4", "yes", "no"}};
int width = hej.length;
int height = hej[0].length;
String[][] zero = new String[width][height];
for(int c=0; c < width; c++) {
for(int d=0,i=0; d<height; d++) {
if(!"0".equals(hej[c][d])) {
zero[c][i] = hej[c][d];
i++;
}
}
}
System.out.println("Printing the values within zero array ::: ");
for(int i=0; i<zero.length; i++) {
for(int j=0; j<zero[i].length; j++ ) {
System.out.println("The values are : "+ zero[i][j]);
}
}
}
任何可以帮助我了解如何创建新内容的人 没有零点的动态数组?
这就是ArrayList
出现的地方。以下是关于如何add elements to add elements dynamically into an array in java.
public static void eliminateZerosWithDynamicArray() throws Exception {
String[][] hej = {{"9.8", "0", "hi", "0"}, {"0", "3.4", "yes", "no"}};
int width = hej.length;
int height = hej[0].length;
List<List<String>> result = new ArrayList<List<String>>(width);
//Iterate the original array
for(int c=0; c < width; c++) {
List<String> templist = new ArrayList<String>();
for(int d=0; d<height; d++) {
if(!"0".equals(hej[c][d])) {
templist.add(hej[c][d]);
}
result.add(templist);
}
}
//Print the list content
for(int c=0; c<result.size(); c++) {
System.out.println("List content : "+result.get(c));
}
}