2016-11-05 2 views
-1

+ - */ 과 같은 고유 한 가능성을 모두 인쇄하려고합니다. 1 + 2-3 * 4/5처럼 보일 것입니다. 또 다른 가능성은 숫자가 재 배열되거나 조작이 재 배열 된 것입니다 . 내 실수는 무한 루프라고 생각했지만 결국 마지막 용어 인 47을 인쇄합니다. 도와주세요.고유 번호 인쇄

import java.util.Scanner; 
import java.lang.Math; 

class Main { 
    public static void main(String[] args) { 

     Scanner scan = new Scanner(System.in); 

     int[] all = new int[47]; 

     System.out.print(all.length); 

     int b = 0; 

     int c = 0; 
     for (int count = 0; count < 47;) { 

      int num1 = (int) (Math.random() * 5 + 1); 

      int num2 = num1; 

      while (num2 == num1) { 
       num2 = (int) (Math.random() * 5 + 1); 
      } 

      int num3 = num2; 

      while ((num3 == num1) || (num3 == num2)) { 
       num3 = (int) (Math.random() * 5 + 1); 

      } 

      int num4 = num3; 

      while ((num4 == num1) || (num4 == num2) || (num4 == num3)) { 
       num4 = (int) (Math.random() * 5 + 1); 
      } 

      int num5 = num4; 

      while ((num5 == num1) || (num5 == num2) || (num5 == num3) || (num5 == num4)) { 
       num5 = (int) (Math.random() * 5 + 1); 
      } 

      int numbers1 = num1 + num2 - num3 * num4/num5; 

      for (int i = 0; i < all.length; i++) 

      { 
       if (all[i] == numbers1) { 
        b = 1; 
       } 

       if ((b != 1) && (i == (all.length - 1))) { 
        all[count] = numbers1; 
        count++; 
       } 

      } 
      int numbers2 = num1 + num2 - num3/num4 * num5; 

      for (int i = 0; i < all.length; i++) 

      { 
       if (all[i] == numbers2) { 
        b = 1; 
       } 

       if ((b != 1) && (i == (all.length - 1))) { 
        all[count] = numbers2; 
        count++; 
       } 
      } 
      int numbers3 = num1 + num2/num3 - num4 * num5; 

      for (int i = 0; i < all.length; i++) 

      { 
       if (all[i] == numbers3) { 
        b = 1; 
       } 

       if ((b != 1) && (i == (all.length - 1))) { 
        all[count] = numbers3; 
        count++; 
       } 
      } 
      int numbers4 = num1 + num2/num3 * num4 - num5; 

      for (int i = 0; i < all.length; i++) 

      { 
       if (all[i] == numbers4) { 
        b = 1; 
       } 

       if ((b != 1) && (i == (all.length - 1))) { 
        all[count] = numbers4; 
        count++; 
       } 
      } 

      int numbers5 = num1 + num2 * num3/num4 - num5; 

      for (int i = 0; i < all.length; i++) 

      { 
       if (all[i] == numbers5) { 
        b = 1; 
       } 

       if ((b != 1) && (i == (all.length - 1))) { 
        all[count] = numbers5; 
        count++; 
       } 
      } 
      int numbers6 = num1 + num2 * num3 - num4/num5; 

      for (int i = 0; i < all.length; i++) 

      { 
       if (all[i] == numbers6) { 
        b = 1; 
       } 

       if ((b != 1) && (i == (all.length - 1))) { 
        all[count] = numbers6; 
        count++; 
       } 
      } 
      int numbers7 = num1 - num2 + num3/num4 * num5; 

      for (int i = 0; i < all.length; i++) 

      { 
       if (all[i] == numbers7) { 
        b = 1; 
       } 

       if ((b != 1) && (i == (all.length - 1))) { 
        all[count] = numbers7; 
        count++; 
       } 
      } 

      int numbers8 = num1 - num2 + num3 * num4/num5; 

      for (int i = 0; i < all.length; i++) 

      { 
       if (all[i] == numbers8) { 
        b = 1; 
       } 

       if ((b != 1) && (i == (all.length - 1))) { 
        all[count] = numbers8; 
        count++; 
       } 
      } 

      int numbers9 = num1 - num2/num3 + num4 * num5; 

      for (int i = 0; i < all.length; i++) 

      { 
       if (all[i] == numbers9) { 
        b = 1; 
       } 

       if ((b != 1) && (i == (all.length - 1))) { 
        all[count] = numbers9; 
        count++; 
       } 
      } 
      int numbers10 = num1 - num2/num3 * num4 + num5; 

      for (int i = 0; i < all.length; i++) 

      { 
       if (all[i] == numbers10) { 
        b = 1; 
       } 

       if ((b != 1) && (i == (all.length - 1))) { 
        all[count] = numbers10; 
        count++; 
       } 
      } 
      int numbers11 = num1 - num2 * num3/num4 + num5; 

      for (int i = 0; i < all.length; i++) 

      { 
       if (all[i] == numbers11) { 
        b = 1; 
       } 

       if ((b != 1) && (i == (all.length - 1))) { 
        all[count] = numbers11; 
        count++; 
       } 
      } 
      int numbers12 = num1 - num2 * num3 + num4/num5; 

      for (int i = 0; i < all.length; i++) 

      { 
       if (all[i] == numbers12) { 
        b = 1; 
       } 

       if ((b != 1) && (i == (all.length - 1))) { 
        all[count] = numbers12; 
        count++; 
       } 
      } 

      int numbers13 = num1/num2 * num3 - num4 + num5; 

      for (int i = 0; i < all.length; i++) 

      { 
       if (all[i] == numbers13) { 
        b = 1; 
       } 

       if ((b != 1) && (i == (all.length - 1))) { 
        all[count] = numbers13; 
        count++; 
       } 
      } 
      int numbers14 = num1/num2 * num3 + num4 - num5; 

      for (int i = 0; i < all.length; i++) 

      { 
       if (all[i] == numbers14) { 
        b = 1; 
       } 

       if ((b != 1) && (i == (all.length - 1))) { 
        all[count] = numbers14; 
        count++; 
       } 
      } 
      int numbers15 = num1/num2 + num3 * num4 - num5; 

      for (int i = 0; i < all.length; i++) 

      { 
       if (all[i] == numbers15) { 
        b = 1; 
       } 

       if ((b != 1) && (i == (all.length - 1))) { 
        all[count] = numbers15; 
        count++; 
       } 
      } 
      int numbers16 = num1/num2 + num3 - num4 * num5; 

      for (int i = 0; i < all.length; i++) 

      { 
       if (all[i] == numbers16) { 
        b = 1; 
       } 

       if ((b != 1) && (i == (all.length - 1))) { 
        all[count] = numbers16; 
        count++; 
       } 
      } 
      int numbers17 = num1/num2 - num3 * num4 + num5; 

      for (int i = 0; i < all.length; i++) 

      { 
       if (all[i] == numbers17) { 
        b = 1; 
       } 

       if ((b != 1) && (i == (all.length - 1))) { 
        all[count] = numbers17; 
        count++; 
       } 
      } 
      int numbers18 = num1/num2 - num3 + num4 * num5; 

      for (int i = 0; i < all.length; i++) 

      { 
       if (all[i] == numbers18) { 
        b = 1; 
       } 

       if ((b != 1) && (i == (all.length - 1))) { 
        all[count] = numbers18; 
        count++; 
       } 
      } 
      int numbers19 = num1 * num2/num3 - num4 + num5; 

      for (int i = 0; i < all.length; i++) 

      { 
       if (all[i] == numbers19) { 
        b = 1; 
       } 

       if ((b != 1) && (i == (all.length - 1))) { 
        all[count] = numbers19; 
        count++; 
       } 
      } 
      int numbers20 = num1 * num2/num3 + num4 - num5; 

      for (int i = 0; i < all.length; i++) 

      { 
       if (all[i] == numbers20) { 
        b = 1; 
       } 

       if ((b != 1) && (i == (all.length - 1))) { 
        all[count] = numbers20; 
        count++; 
       } 
      } 
      int numbers21 = num1 * num2 + num3 - num4/num5; 

      for (int i = 0; i < all.length; i++) 

      { 
       if (all[i] == numbers21) { 
        b = 1; 
       } 

       if ((b != 1) && (i == (all.length - 1))) { 
        all[count] = numbers21; 
        count++; 
       } 
      } 

      int numbers22 = num1 * num2 + num3/num4 - num5; 

      for (int i = 0; i < all.length; i++) 

      { 
       if (all[i] == numbers22) { 
        b = 1; 
       } 

       if ((b != 1) && (i == (all.length - 1))) { 
        all[count] = numbers22; 
        count++; 
       } 
      } 

      int numbers23 = num1 * num2 - num3/num4 + num5; 

      for (int i = 0; i < all.length; i++) 

      { 
       if (all[i] == numbers23) { 
        b = 1; 
       } 

       if ((b != 1) && (i == (all.length - 1))) { 
        all[count] = numbers23; 
        count++; 
       } 
      } 
      int numbers24 = num1 * num2 - num3 + num4/num5; 

      for (int i = 0; i < all.length; i++) 

      { 
       if (all[i] == numbers24) { 
        b = 1; 
       } 

       if ((b != 1) && (i == (all.length - 1))) { 
        all[count] = numbers24; 
        count++; 
       } 
      } 

     } 

     for (c = 0; c < all.length; c++) { 
      if (c > 0) { 
       System.out.print(", "); 
      } 
      System.out.print(all[c]); 

     } 
     System.out.print(all.length); 

    } 

} 
+0

적은 코드를 게시해야합니다. 이것은 누군가가 파헤쳐지기를 기대하기에는 너무 어렵습니다. 디버깅을 시도 했습니까? – Carcigenicate

답변

0

"최종"용어 47은 루프가 시작되기 전에 주 방법에서 세 번째 행으로 인쇄됩니다. 모든 배열의 길이를 인쇄하고 있기 때문입니다.

System.out.print (all.length);

코드 자체 정보. 가장 좋은 방법은 루프 수를 줄이는 것입니다. 메인 루프 내부의 모든 루프가 47 회 실행되기 때문에 이것은 무의미한 복잡성입니다. 알고리즘을 수정하는 방법에 대한 제안은 조합/순열에 관한 다른 질문을 살펴보십시오. example.