2014-12-11 4 views
2

Пересмотренный вопрос: Я хочу, чтобы четные элементы моего массива сохранялись в соответствующем массиве. Мои утверждения if else делают это. Так как всегда будет варьироваться количество эвенов и коэффициентов, каждый из которых выполняется, я хочу, чтобы размер evenArray и oddArray настраивался с каждой итерацией моего цикла while. Я получаю ошибку при компиляции, которая говорит, что я не делаю эту часть права.Хранение случайных значений в массиве

import java.util.Arrays; 
import java.util.Random; 
public class randomdemo { 
    public static int[] randommethod() 
    { 
     int i = 0; 

     int[] myArray; 
     myArray = new int[100]; 

     int[] evenArray; 

     int[] oddArray; 

     while(i<=99) 
     { 
      Random rand = new Random(); 
      int n = rand.nextInt(25) + 0; 
      myArray[i] = n; 

      if(myArray[i] % 2 == 0) 
      { 
       evenArray = new int[i]; 
       evenArray[i] = n; 
      } 
      else 
      { 
       oddArray = new int[i]; 
       oddArray[i] = n; 
      } 

      i++; 
     } 

     return myArray; 
    } 

    public static void main(String args[]) 
    { 
     int[] result = randommethod(); 
     System.out.println(Arrays.toString(result)); 
     randommethod(); 
    } 
} 
+1

Вы никогда не попросить программу, чтобы напечатать что-нибудь (например, с использованием метода, как 'println'). Поэтому ожидается, что ничего не будет напечатано. – Bert

ответ

3

Сохраните результат и, возможно, распечатайте его. Вы можете использовать петлю или Arrays.toString(int[]). Нечто подобное,

int[] result = randommethod(); 
System.out.println(Arrays.toString(result)); 

Когда я положил обе строки в main() и использовать Опубликованная randommethod() это, кажется, работает.

+0

У меня есть еще один быстрый вопрос о программе. См. Отредактированный вопрос. Благодаря! –

+0

Массивы Java не являются структурами данных с динамическим размером. Вы не можете этого сделать. Вы можете определить их как то же, что и вход (и оставить пустые слоты). Или вы можете использовать 'Collection', как' ArrayList ', который является динамическим. –

1

Возвращенный массив не используется.

Таким образом, возврат от randommethod() составляет int[], но основной метод не распечатывает его (или использует его каким-либо образом).

Вот один из способов использовать его:

int[] outputRandomAry = randommethod(); 
for (int elem : outputRandomAry) { 
    System.out.print(elem + ", "); 
} 
System.out.println(); 

Кроме того, вы можете захотеть поставить Random rand = new Random(); //using the random class вне цикла. Это предотвращает ненужное отключение новых объектов для каждого ранда.

И вы можете использовать int n = rand.nextInt(26); для 0 (включительно) до 26 (эксклюзивно), что дает желаемый диапазон.

+0

Можете ли вы объяснить еще кое-что? –

+0

@YoungDeezie Я отредактировал ответ, чтобы включить дальнейшие подробности. –

0

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

System.out.println(Arrays.toString(randommethod())); //print array 

На этой линии, вы вернули vaule:

return myArray; //returns the array 

Но вы не храните его в любом месте. Таким образом, возвращаемое значение теряется. Даже если вы выполнили всю работу в этом методе.

магазина вашего обратный массив следующим образом в главного

int[] myArray = randommethod(); //store returned value (from method) 

После этого, вы можете сделать все, что вы хотите с возвращенным массивом.

0

Кроме вещей, упомянутых другим пользователем, если бы я тебя, я буду писать ваш метод следующим образом:

public static int[] randommethod()  //declaring method 
{ 
    Random rnd = new Random();   //using the random class 
    int[] myArray = new int[100];  //create and initializing array in 1 line 

    for(int x=0; x<myArray.length; x++) //Normally use for-loop when you know how many times to iterate 
     myArray[x] = rnd.nextInt(26); //0-25 has 26 possibilities, so just write 26 here 

    return myArray;      //returns the array 
} 

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

В основном ..

public static void main (String[] args) 
{ 
    int[] myArray = randommethod(); 
} 
0

Если вы хотите случайный Int от 0 до 25 включительно, то ваш код должен быть:

int n = rand.nextInt(26); //I want a random int between 0 and 25 inclusive