2012-08-07 4 views
3
public static GetRandomFunc() { 
    switch((int)(Math.random()*NUM_FUNCTIONS) { 
     case 0: 
      functionA(); 
      break; 
     case 1: 
      functionB(); 
      break; 
     case 2: 
      functionC(); 
      break; 
      // ... 
    } 
} 

각 함수가 한 번 호출 된 다음 종료 될 때까지 임의로 메인에서 GetRandomFunc()를 호출하려고합니다. 함수가 한 번만 호출되는지 확인하고, 모두 호출 된 경우 System.out.println을 인쇄합니다 ("모두 완료").메인에서 무작위 함수 가져 오기

답변

5

0,1,2를 포함하는 목록을 만듭니다.이를 섞어서 반복하면서 각 함수를 한 번씩 임의의 순서로 호출합니다.

List<Integer> integers = Arrays.asList(0,1,2); 
Collections.shuffle(integers) 
for (Integer i: integers){ 
    GetRandomFunc(i) 
} 

과 기능은

public static GetRandomFunc(int index) { 
    switch(index) { 
     case 0: 
      functionA(); 
      break; 
     case 1: 
      functionB(); 
      break; 
     case 2: 
      functionC(); 
      break; 
      // ... 
    } 
} 
+0

자바 기능의 목록을 만들 수 없습니다. 인터페이스와 여러 클래스를 구현하여이를 초과 구현하지 마십시오. 이렇게하면 기존 코드를 getRandomFunc에 유지하고 그 위에 추가 할 수 있습니다. – Brad

+0

안녕하세요, 저는 정말 java/프로그래밍에 익숙합니다. 좀 더 설명해 주시겠습니까? 이 새로운 기능을 만들 수 있습니까? 또는 GetRandomFunc()에 있습니까? – user872009

+0

그리고 GetRandomFunc()에 매개 변수로 i를 어떻게 전달합니까? 더 자세히 설명해 주시면, 정말로 감사드립니다. 감사. – user872009

3

함수의 목록을 만들고 무작위로 가져옵니다. . 비어있는 경우 모든 기능을 정확히 한 번 사용했는지 확인할 수 있습니다.

public interface Function { void execute(); } 

public static runFunctionsRandomly(List<Function> functions) { 
    while (!functions.isEmpty()) { 
     int index = Math.random() * functions.size(); 
     Function f = functions.get(index); 
     f.execute(); 
     functions.remove(index); 
    } 
} 

class ExampleFunction implements Function { 
    void execute() { 
    System.out.println("Hello world!"); 
    } 
} 
... 
+0

당신은 정말이 당신을 위해 지금까지 최고의 솔루션입니다 – MByD

관련 문제