2015-03-10 2 views
2

Создайте два IntegerArrayLists, содержащий n элементов каждый, где n будет взято у пользователя.Как создать массив с «n» случайными целыми числами?

так что, если пользователь вводит «6», необходимо создать два массива с 6 элементами. Как мне это сделать?

Это то, что у меня есть .. но оно даже не отдаленно корректно.

Scanner input= new Scanner(System.in); 
    System.out.println("please enter a integer 'n' "); 
    int x= input.nextInt(); 

    int[] a = { 1, 4, 9, 16 }; 
    int[] b = { 9, 7, 4, 9, 11 }; 
+5

Начну с того, что вы создаете массивы. Это не то же самое, что ArrayLists. Поэтому вы должны прочитать в ArrayLists. Затем вы должны прочитать случайные числа в Java. Затем вы должны прочитать циклы. –

+0

Возможный дубликат [Заполнение моих массивов случайными числами?] (Http://stackoverflow.com/questions/16205651/filling-my-arrays-with-random-numbers) –

+0

Проверьте мое решение –

ответ

5

Вы можете ta ке ввода от пользователя с помощью сканера, как это -

Scanner input= new Scanner(System.in); 
System.out.println("Enter the array size: "); 
int n = input.nextInt(); 

После этого вы можете вызвать функцию generateRandomArray() с размером n получить от пользователя -

public List<Integer> generateRandomArray(int n){ 
    ArrayList<Integer> list = new ArrayList<Integer>(n); 
    Random random = new Random(); 

    for (int i = 0; i < n; i++) 
    { 
     list.add(random.nextInt(1000)); 
    } 
    return list; 
} 

Здесь - random.nextInt(1000) будет генерировать случайные номер от диапазона от 0 до 1000. Вы можете исправить диапазон, как хотите.

Надеюсь, это поможет.
Большое спасибо.

0
int x = input.nextInt(); 

    int[] a = new int[x]; 
    int[] b = new int[x]; 

Затем вы можете заполнить значения, однако вы должны их

+1

@ lacraig2 Он не понимал, чего хочет, в своем коде у него есть массивы и говорит, что ему нужны массивы. – sparkyShorts

1
Scanner input= new Scanner(System.in); 
System.out.println("please enter a integer 'n' "); 
int x= input.nextInt(); 

int[] a = new int[x]; 
int[] b = new int[x]; 

В основном это целочисленный массив не список массива

для списка массива вам нужно создать его с помощью

List<Integer> integerList=new ArrayList<Integer>(); 
0

Сначала создайте ArrayList из целых чисел. Затем вы можете добавить столько целых чисел, сколько захотите.

ArrayList<Integer> ar = new ArrayList<Integer>(); 
ar.add(1); 
0

Я не буду дублировать то, что уже говорили другие, так как это достаточно, но, возможно, понимая разницу между ArrayLists и Массивы принесет пользу вам.

ArrayList Documentation

Array Documentation

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

0

С 1,8

// Since, as per your question, you're using arrays even though 
// you state you want ArrayLists, we will assume you know why you're 
// doing so. 
int[] a = new int[x]; 
int[] b = new int[x]; 
Random random = new Random(); 
IntUnaryOperator unaryOpInt = (p) -> random.nextInt(maxIntVal); 
// populate array a with random numbers 
Arrays.setAll(a, unaryOpInt); 
// populate array b with random numbers 
Arrays.setAll(b, unaryOpInt); 
// Since, as per your question, you require ArrayLists, you can 
// create ArrayLists from arrays a and b as follows. 
// create an ArrayList from array a 
ArrayList<Integer> aArrList = new ArrayList<>(IntStream.of(a).boxed().collect(Collectors.toList())); 
// create an ArrayList from array b 
ArrayList<Integer> bArrList = new ArrayList<>(IntStream.of(b).boxed().collect(Collectors.toList())); 

Это, как сказано и сделано, я бы просто держать его простым и использовать цикл инициализации для случайной величины и работать мой путь вокруг, не имея использовать массивы, если я 'm потребует ArrayLists или наоборот.

3

Для полноты картины, так как вы можете

  1. Генерация Int поток из следующего междунар из случайного числа генератора в качестве поставщика ()->r.nextInt()
  2. Limit поток до нужного размера
  3. Преобразование его в массив

    int[] randomIntsArray=IntStream.generate(r::nextInt).limit(size).toArray()

0

Вы можете использовать MockNeat (отказ от ответственности Я автор):

MockNeat mockNeat = MockNeat.threadLocal(); 
MockUnitInt intUnit = mockNeat.ints().range(0, 100); 

int[] arr1 = intUnit.arrayPrimitive(100).val(); 
Integer[] arr2 = intUnit.array(100).val(); 
List<Integer> list1 = intUnit.list(100).val(); 
List<List<Integer>> list2 = intUnit.list(100).list(100).val(); 

Библиотека позволяет легко описать поведение для генерации произвольных данных, а затем использовать это «поведение» и произвести все виды структуры с ним.

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