2016-07-27 3 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' 세 세트 (목록)이라고합니다. 그러나 목록 중 하나가 비어 있으면 비어있는 요소가있는 집합으로 바뀝니다.

// 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

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 

이는 루프에 들어갈 것이다 null가 listB의 요소이기 때문이다. 그러면 b!=null을 확인하기 때문에 b가 인쇄되지 않습니다. 그리고 답변에서 코드의 몇 가지 실수도 수정되었습니다.

관련 문제