2017-03-25 88 views
0

新的陣列我有這個數組: 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]; 

但事實並非如此工作,我不明白爲什麼。

如果我這樣做,沒有一個循環是這樣的: `如果(!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循環不起作用,以及如何使循環遍歷整個[] []數組?

  • 任何人都可以幫助我理解如何同時創建一個沒有零點的新動態數組?

謝謝!

+0

是你的標題應該說「數組」?你能過濾內部列表嗎?如果你用for循環來做,你需要2個嵌套循環。第二個循環檢查內部列表。 – Carcigenicate

+0

是的。抱歉。我可以編輯它嗎? –

+0

你可以很容易。在您的帖子下按「編輯」。 – Carcigenicate

回答

0

任何人都可以幫助我理解爲什麼我的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)); 
     } 
    }