2014-02-11 3 views
-2

Так что я искал везде, где можно было бы это сделать, и я не могу найти метод, который бы удовлетворял то, что хочет мой профессор.Случайное число выпуск Java

Он хочет, чтобы мы создали случайное число со случайным семенем, которое затем тестируется, чтобы узнать, является ли оно любым числом в наборе чисел, а затем измените его до тех пор, пока это не будет любое число, номера.

Уловка нам не разрешено использовать циклы любой формы, кроме как если бы заявления или не разрешали использовать рекурсии в процессе этого.

Пожалуйста, помогите.

+3

Я не думаю, что он хочет, чтобы вы нашли способ, но чтобы написать его. [подсказка подсказки] –

+2

Покажите нам, что вы пробовали, не просто попросите решение. – Submersed

+0

Lmao thats, что я имел в виду, я сидел здесь, как 4 часа, просто тупик, каждая идея, которую я получаю, кажется, включает рекурсии или циклы. – user3299002

ответ

-2

Это решение не использует один цикл и дает вам результаты, которые вы хотели. Извините за предыдущее ложное решение. Попробуйте:

import java.util.Random; 

public class rndNumberGenerator { 

    public static int[] myNumbers = new int[] {1, 2, 3, 4, 6, 7, 9}; 

    public static void main(String[] args) { 

     checkNumber1();  

    } 

    public static void checkNumber1() { 

     Random rnd = new Random(); 

     int x = rnd.nextInt(10); 

     int y = goThroughAnArray1(0, x); 

     if (y != -1) { 
      System.out.println("Generated number is " + x + " and it's already part of the array." 
        + "\nGenerating new random number.."); 
      checkNumber2(); 
     } 

     System.out.println("Generated number is " + x + " and it's not the part of the array."); 
     System.exit(0); 

    } 

    public static void checkNumber2() { 

     Random rnd = new Random(); 

     int x = rnd.nextInt(10); 

     int y = goThroughAnArray1(0, x); 

     if (y != -1) { 
      System.out.println("Generated number is " + x + " and it's already part of the array." 
        + "\nGenerating new random number.."); 
      checkNumber1(); 
     } 

     System.out.println("Generated number is " + x + " and it's not the part of the array."); 
     System.exit(0); 

    } 

    public static int goThroughAnArray1(int i, int number) { 

     if (i == myNumbers.length) 
      return -1; 

     if (myNumbers[i] == number) 
      return number; 

     i++; 
     int x = goThroughAnArray2(i, number); 

     return x; 
    } 

    public static int goThroughAnArray2(int i, int number) { 

     if (i == myNumbers.length) 
      return -1; 

     if (myNumbers[i] == number) 
      return number; 

     i++; 
     int x = goThroughAnArray1(i, number); 

     return x; 
    } 

} 
+0

Хорошо, это определенно работает, в настоящее время пытается понять это и сломать его в моей голове, спасибо! – user3299002

+0

Нет проблем. Однако не могли бы вы объяснить мне, как работает i ++ в goThroughAnArray. – user3299002

+1

Это смешно. Не только сложный и запутанный код, но и вопрос о том, что не должно быть циклов или рекурсии. Этот ответ использует рекурсию, но факт, что вы использовали две функции вместо него, показывает, что вы не понимаете, что такое рекурсия. – paddy

2

Возможно, упражнение заставляет вас принять мыслительный процесс программиста. Проблема задается в терминах недопустимых чисел. Однако тестирование и повторная прокатка заставляют вас использовать цикл.

Вам нужно перевернуть свое мышление и рассмотреть возможность использования набора разрешенных номеров. Все, что вам нужно сделать, это создать случайный индекс в «разрешенном» наборе и выбрать значение в этой позиции.

+0

Святое дерьмо вы только что дали мне идею. Я так застрял на том, что мне не позволили, я забыл рассмотреть, что именно будет разрешено. – user3299002

+1

Цель упражнения, как я сказал, вероятно, заставить вас думать, как программист, а не овец. – paddy

+0

Хорошо, теперь у меня есть новая идея, чтобы работать с этим. Спасибо. – user3299002

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