2016-11-05 8 views
-1

+ - */ と1 2 3 4 5のすべてのユニークな可能性を印刷しようとしています1 + 2-3 * 4/5のようになります もう1つの可能性は、 。私のミスは無限ループだと思っていましたが、最後に最後の言葉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は、ループが開始する前にメインメソッドの第3行として印刷されます。あなたはすべての配列の長さを印刷しているからです。

System.out.print(all.length);

コード自体について。あなたの最善の策はあなたのループの数を減らすことです。これは、メインループ内のすべてのループが47回実行されるので、無意味な複雑さです。アルゴリズムを修正する方法の提案については、組み合わせ/置換に関する他の質問を参照してください。 exampleの場合。