2016-11-05 2 views
-1

Я пытаюсь напечатать все уникальные возможности 1 2 3 4 5 с + - */ . Было бы похоже, что 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.

Смежные вопросы