2016-07-27 22 views
0

ここで私がしたいいくつかのsudoのコード。結果を期待マイ要素のJavaでnullを含む

String[] listA = new String { "a1", "a2"} 
String[] listB = new String { null} 
String[] listC = new String { "c1", "c2"} 

for(String a : listA) { 
    for(String b : listB) { 
    for(String c : listC) { 
     if(a!=null) System.out.print(a); 
     System.out.print(","); 
     if(b!=null) System.out.print(b); 
     System.out.print(","); 
     if(c!=null) System.out.print(c); 
     System.out.println(""); 
    } 
    } 
} 

a1,,c1 
a1,,c2 
a2,,c1 
a2,,c2 

である。しかしListBのがnullであるため、コードのロジックは、印刷に入ることができません。私はリストをチェックし、以下のようなロジックのすべての可能性を作るための条件を試しました。

if(listA != null) { 
    for(String a : list A) { 
    if(listB !=null) { 
     for(String b : listB) { 
      if(listC != null) { 
      } 
      else { 
       ... 
      } 
     } 
    } 
    else { 
      .... 
    } 
    } 
} 
else { 
    ...... similar code in here 
} 

私はこの問題を解決する最良の方法ではないと思います。これのアイデア?

+2

多分、実際のJavaコードを質問に入れるべきでしょう。 – immibis

+0

今のところ、 'print a'と' print '、 ''は無効であるためプログラムは動作しません。 – immibis

+0

は実際のJavaコードとして印刷コードを変更しました。 –

答えて

1

'product' 3のセット(リスト)と呼ばれています。しかし、いずれかのリストが空のときには、空の要素を含むセットに置き換えられます。 nullListBのの要素であるため

// pseudo code 
String[] safeList(String[] list) { if list.length == 0 return {''} else return list; } 

// carthesian product with a twist 
static void safeProductWithATwist(
    String[] listA, String[] listB, String[] listC) { 
    for(String a: safeList(listA)) 
     for(String b: safeList(listB)) 
     for(String c: safeList(listC)) 
      foo(a, b, c); 
} 
1

これは、Java

String[] listA = new String { "a1", "a2"} 
String[] listB = new String { null} 
String[] listC = new String { "c1", "c2"} 

で、このいずれかを試してみてください間違っています。これはあなたのために働くでしょう。何をしたい

public class prac { 
    public static void main(String[] args) { 
     String[] listA = {"a1","a2"}; 
     String[] listB = {null}; 
     String[] listC = {"c1", "c2"}; 

for(String a : listA) { 
    for(String b : listB) { 
    for(String c : listC) { 
     if(a!=null) System.out.print(a); 
     System.out.print(","); 
     if(b!=null) System.out.print(b); 
     System.out.print(","); 
     if(c!=null) System.out.print(c); 
     System.out.println(""); 
    } 
    } 
} 

    } 

} 
1
package Test; 

public class Test { 

    public static void main(String[] args) { 
     String[] listA = { "a1", "a2"}; 
     String[] listB = { null}; 
     String[] listC = { "c1", "c2"}; 
     int count = 0; 

     for(String a : listA) { //Two time it will enter 

      for(String b : listB) { 
       count++; 
       System.out.println(""); 
       System.out.println("Count"+count); 
       System.out.println(""); 
      for(String c : listC) { 
       System.out.println(""); 
       if(a!=null) System.out.print(a); 
       System.out.print(","); 
       if(b!=null) System.out.print(b); 
       System.out.print(","); 
       if(c!=null) System.out.print(a); 
      } 
      } 
     } 
    } 

} 

OUTPUT

Count1 


a1,,a1 
a1,,a1 
Count2 


a2,,a2 
a2,,a2 

それは、ループに入ります。 b!=nullをチェックしているので、bを印刷しません。 そして答えでは、コードのいくつかの間違いも訂正されました。

関連する問題