Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Генерация чисел от....до


Автор: Value 14.2.2010, 14:52
Доброе время суток...
Начал недавно изучать JAVA и у меня возник такой вопрос:
как сгенерировать массив чисел, к примеру,  от 10 до 25 и чтобы они не повтроялись ?
Заранее спасибо за ответы

Автор: NightmareZ 14.2.2010, 15:22
Код
public static int[] CreateArray(int minValue, int maxValue)
{
    List<Integer> lst = new ArrayList<Integer>();
    for (int i = minValue; i <= maxValue; i++)
        lst.add(i);
    Random rnd = new Random();
    int[] arr = new int[maxValue - minValue + 1];
    for (int i = 0; i < arr.length; i++)
    {
        int idx = rnd.nextInt(lst.size());
        arr[i] = lst.get(idx);
        lst.remove(idx);
    }
    return arr;
}

Автор: Value 14.2.2010, 15:34
спасибо огромное 

Автор: Value 15.2.2010, 21:19
обьясните пожалуйста вот эту строку:
Код

lst.remove(idx);

для чего она нужна ?

Автор: MaxPayneC 15.2.2010, 22:07
Эта строка "говорит" списку, что данное число уже выпадало, и больше его не следует "пропускать".

Автор: Value 15.2.2010, 23:23
вот теперь всё ясно... ещё раз всем спасибо

Автор: Value 21.3.2010, 03:42
Дальше больше smile
исходя из кода, как создать другой массив такой же длинны, но чтобы значения в одинаковых индексах массивов не повторялись
примерно вот так : 
Код

(значение)FirstArray[1] != (значение)SecondArray[1];

 smile 
Заранее спасибо

Автор: dorogoyIV 21.3.2010, 05:48
я бы выделил в отдельный метод получение нового значения:
Код

 for(int i = 0; i < first_arr.size(); i++)
 {
  int new_value = getNewValue();
 
  while (new_value == first_arr.get(i))
   new_value = getNewValue();

  second_arr.set(new_value, i);
 }

 private int getNewValue()
 {
  return new Random();
 }


подправишь там мелочи (привести к нужному типу, и т.д. ...)

Автор: Value 11.5.2010, 20:37
Код

private int getNewValue()
 {
  return new Random();
 }



в этом месте ошибку выдаёт... 
Код

incompatible types
required: int
found: java.util.Random

Код

private void getNewValue(){
Random rand = new Random();
int i = rand.nextInt(someInt);
return i;

Такое подходит или же можно по другому метод обявить ?

Автор: dorogoyIV 12.5.2010, 09:15
Цитата(Value @  11.5.2010,  20:37 Найти цитируемый пост)
в этом месте ошибку выдаёт... 

 smile
Цитата(dorogoyIV @  21.3.2010,  05:48 Найти цитируемый пост)
подправишь там мелочи

Код

 private int getNewValue()
 {
  return new Random().nextInt();
 }



Автор: Value 12.5.2010, 19:59
простите за настойчивость, но это получается, что при каждой новой проверке ( у меня их несколько) надо создавать новый List<Integer> ?

Автор: EnJ 12.5.2010, 23:36
Не совсем понял суть вопроса.
В данном примере создается всего два List'a. Второй можно и не создавать, а писать прямо в массив int'ов.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)