Java - 创建没有零的新数组

时间:2017-03-25 12:18:32

标签: arrays for-loop zero

我有这个数组: 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循环遍历整个[] []数组?

  • 任何可以帮助我了解如何创建一个没有零点的新动态数组的人?

谢谢!

1 个答案:

答案 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));
        }
    }