2011-11-04 52 views
2

夥計們我在使用java時有點新,而且我正在嘗試編寫一個程序,它將檢查2d數組是否包含1d數組的值。第二個數組類似於數字列表,它將檢查第一個數組是否匹配。在Java中將2d數組與1d進行比較

array1[6]= {"a","b","c","d","e","f"} 
array2[1][4]={{"a","b","c","d"}{"d","e","f","g"}} 
array2[0]= rowcomplete ; // because it contain all the value a,b,c,d 
array2[1]= incomplete; // because it only match d,e,f but not g 

這是我的代碼:

String array1[] = {"a","b","c","d","e","f"}; 
String array2[][] = {{"a","b","c","d"}, {"d","e","f","g"}}; 

for (int 2row = 0; 2row < array2.length; 2row++) { 
    for (int 2column = 0;2column< array2[2row].length;2column++) {  
    for(int 1row=0; 1row < array1[1row].length();1row++) { 
     if (array2[2row][2column].equals(array1[1row])) { 
     System.out.println("complete"); 
     } 
     else{ 

     } 
    } 
    } 
} 
+6

爲什麼所有的變量都以數字開始?它不會編譯。 –

+0

哦!對不起我的錯誤,也是array1 [] = {「a」,「b」,「c」,「d」,「e」,「f」}和array2 [] [] = {{「a」 ,「c」,「d」} {「d」,「e」,「f」,「g」}} – user1030431

回答

3

一個簡單的方法來做到這一點是使用Arrays類到您陣列轉變成一個列表,並使用containsAll方法,像這樣:

String array1 []={"a","b","c","d","e","f"}; 
    String array2 [][] ={{"a","b","c","d"},{"d","e","f","g"}}; 

    List<String> array1AsList = Arrays.asList(array1); 

    for (int i = 0; i < array2.length; i++) { 
     List<String> array2rowAsList = Arrays.asList(array2[i]); 

     if(array1AsList.containsAll(array2rowAsList)){ 
      System.out.println("row " + i + " is complete"); 
     } 
    } 
+0

哇!感謝它真的在工作 – user1030431

+0

很高興有幫助:) –

+0

呵呵!非常感謝 – user1030431

2

只是爲了澄清上述Banthar的評論暗示:

Java變量名不能以數字開頭。他們只能以_underscore,letter或美元符號$開頭。在第一個字母之後,您可以使用數字。

2

如果您爲array1使用數組列表,這會更容易,因爲您可以使用arrayList.contains()來確定該值是否在列表中。

使用數組列表並像以前一樣聲明/初始化array2,請嘗試以下操作: ArrayList array1 = new ArrayList(); Collections.addAll(array1,「a」,「b」,「c」,「d」,「e」,「f」);
boolean matchFlag;

for(int i = 0;i< array2.length; i++){ 
    matchFlag = true; 
    for(int j=0;j<array2[i].length; j++){ 
     if(array1.contains(array2[i][j]) == false){ 
      //found string that did not match 
      // 
      matchFlag = false; 
     } 
    } 
    if(matchFlag){ 
     //complete array 
    } 
} 

希望這有助於!

+0

舊金山打敗了我:( –

+0

對不起:P你會擊敗我下次:) –

+0

你仍然得到一票。 – Mob

0

您還可以使用滿足Arrays.equals

String array1[] = {"a","b","c","d","e","f"}; 
String array2[][] = {{"a","b","c","d"}, {"d","e","f","g"}}; 

for (int i = 0; i < array2.length; i++) { 
    if(java.util.Arrays.equals(array1, array2[i]) { 
     ... 
    } 
}