2013-11-17 2 views
1

Я как бы новый на Java, и мне были назначены некоторые упражнения. Любая идея, как эта небольшая проблема?Создание методов для печати массива (новичок в java)

  1. создать массив, состоящий из 100 случайных чисел в диапазоне от 100 до 500, включая конечные точки.
  2. сделать способ печати массива, 5 номеров в строке, с пробелом между ними.
  3. Сделайте способ печати наименьшего числа в массиве.

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

package randomhundred; 

import java.text.DecimalFormat; 

public class RandomHundred { 
    public static void main(String[] args) { 
     //setting the 100 array 
     int rand [] = new int [100]; 
     double numb; 
     DecimalFormat dec = new DecimalFormat("0"); 
     for(int i=0; i<rand.length; i++){ 
      numb = Math.random() * ( 500 - 100); 
     } 
    } 

    public static int arai(){ 
     return System.out.print(" " + dec.format(numb) + " "); 
    }  
} 
+3

Начинайте с определения того, что не работает, и как оно не работает. Прочтите любое сообщение об ошибке, которое вы получите, и попытайтесь понять это. Google для сообщения об ошибке. И начните с еще более простых упражнений, таких как печать значения на консоли. Затем заполните массив и распечатайте его содержимое на консоли. Затем генерирует одно случайное число и печатает его на консоли. Затем заполнение массива случайными числами и т. Д. –

ответ

1

Давайте шаг 1 право .... генерирование 100 случайных значений.

Ваш процесс почти там .... но:

  1. он не генерирует int значение, так что вы не можете сохранить его в int[] массиве.
  2. он никогда не будет генерировать значение 500.

Чтобы преобразовать случайное число в целое число, попробуйте следующее:

int numb; 
.... 
    numb = (int)(Math.random() * ( 500 - 100)); 

, но это не будет генерировать значение 500 (потому что 500 - 100 400, но есть на самом деле 401 число нужно создать ....), поэтому изменить его (см How do I generate random integers within a specific range in Java?):

numb = 100 + (int)(Math.random() * ( (500 - 100) + 1)) 

Теперь у нас есть случайные числа в диапазоне от 100 до 500 (включительно), необходимо хранить их в массиве Сейчас:

rand[i] = numb; 

Как только вы начнете работать, вернитесь, и мы сможем решить другие проблемы.

до тех пор, вы не можете распечатать свой массив с:

System.out.println(Arrays.toString(rand)); // Arrays is java.util.Arrays 
+0

Он также НЕ будет генерировать числа от 100 до 500, как указано OP. Давайте сделаем шаг 1 ** right **: int numb = ** 100 ** + (int) (Math.random() * 401); : D – Melquiades

+0

Спасибо ... дух, конечно. Даже я забываю иногда в спешке (я не забуду в реальной жизни .... ** обещаю ** (честь скаута) – rolfl

+0

:) Не стоит беспокоиться. Btw, вы забыли закрыть скобку в своем комментарии (открылись после «поспешности»); p Хорошо, не нужно также редактировать комментарий;) – Melquiades

0

Попробую поставить какой-то псевдо-код для вашей проблемы:

// Task 1 
Declare array of 100 ints (I will relate to 100 later on with n). 
Fill array with random integers between 100 and 500 including borders 

код Подсказка для этого: 100 + new Random().nextInt(401), 401 так как верхняя граница является эксклюзивной, что делает максимальный результат: 100 + 400 -> 500 и минимум: 100 + 0 = 100. Даже при том, что это будет генерировать 100 номеров, оно будет быстрее, если вы где-нибудь храните случайный экземпляр, используйте его, но это шаг оптимизации.

// Task 2 
for i = 0; i < n; i++ 
    print integer from array 
    add space 
    if i is divisible by 5 then 
     add new line 
    end-if 
end-for 

//Task 3 
declare a min of the maximum value which is possible: in this case your maximum random number of 500 
loop through the list checking for smaller numbers 
after loop has finished print the last number 

Я надеюсь, что это достаточно ясно, чтобы вы поняли, как это можно сделать.

0

Объявление. 1 Для полноты картины (это было объяснено другими):

for(int i=0; i<rand.length; i++){ 
    rand[i] = 100 + (int)(Math.random() * ( 401)); 
} 

объявлений.2 Это неправильно:

public static int arai(){ 
    return System.out.print(" " + dec.format(numb) + " "); 
} 

возвращаемый тип INT, но System.out.print() не возвращает ничего, так что изменение ИНТ к мочеиспусканию и удалить обратный ключевое слово. Затем вам необходимо выполнить итерацию по всему массиву:

public static void arai(){ 
    for (int i=0; i< 100; i++) { 
     //this is modulo, which means that if i divided by 5 has no remainder, print next line 
     //eg. 5%2 = 1, because 2*2 + 1 = 5 
     //5%3 = 2 and so on, read here http://en.wikipedia.org/wiki/Modulo_operation 
     if (i%5 == 0) { 
      System.out.println(); 
     } 

     //finally, print each value from rand array 
     System.out.print(rand[i] + " "); 
    } 
} 

Объявление. 3 Попробуйте себя и вернитесь, если у вас есть проблемы, но следуйте совету Джонайни, чтобы найти самое маленькое число.

ПРИМЕЧАНИЕ: вам также необходимо сделать объявление массива rand глобальным, чтобы он был доступен для метода arai().

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