Подскажите пожалуйста, в чем моя ошибка?

  • Автор темы rn3rjd
  • Дата начала
R

rn3rjd

Написал такой метод:
Java:
/*
 * Создается массив заполненый случайными числами с указаным диапазоном значений
 */
package zadachi;
 
 
 
 
import java.util.Random;
 
 
 
 
 
 
 
 
public class CreateMassiv {
	
	public static int [] createMassiv(int size, int from, int before) throws RuntimeException{
		
		if (before < from){  // Если введен не верный диапазон значений бросить Exception
			throw new RuntimeException("Invalid range of values!");
		}
		
		int[] massiv = new int [size]; // Инициализируем массив размерности size
		 
		Random rand = new Random ();  // Создаем объект класса Random
			   
		for (int i = 0; i < size; i ++){
			
			if (from < 0 && before < 0) {	// Если диапазон в области отрицательных чисел
				massiv [i] = rand.nextInt((Math.abs(from)- Math.abs(before)) + 1) - Math.abs(from);
			}
			
			if (from > 0 && before > 0){	  // Если диапазон в области положительных чисел 
				massiv [i] = rand.nextInt(before - from + 1) + from;
			} 
			if (from < 0 && before >= 0){		// Если диапазон от отрицательного числа до положительного или до ноля
				massiv [i] = rand.nextInt(Math.abs(from)+before+1) - Math.abs(from);
			}
			
		}
		
		return massiv;
	}
	
}

Он возвращает массив указанной размерности заполненный псевдослучайными числами в заданном диапазоне значений. Но мне кажется, что то я с логикой перехимичил, какой то уж больно громоздкий код, для простой задачи.. Раскритикуйте пожалуйста. Укажите на логические ошибки. Да и в целом, что в этом коде не так. Заранее спасибо всем, кто откликнется!
 

garrick

Lotus Team
26.10.2009
1 367
152
BIT
364
А обязательно делать все эти if проверки? Разве не будет работать

Java:
massiv [i]= from + (int)(Math.random() * ((before - from) + 1))

И если уж они вдруг нужны (if'ы), то неплохо бы было дополнить их else, а то получается, что если первое условие удовлетворяет для заполнения massiv , то все последующие всё равно проверяются тоже.
 

Kmet

Well-known member
25.05.2006
904
8
BIT
0
вы просто подошли не стой стороны


я не вникал в детали, но принцип должен быть понятен

и вот такие имена давать не надо"createMassiv", кирилица, транслитерация в коде плохая практика
 
M

-master-

Чем же кирилица плоха? Немцы, к примеру, пишут по немецки, с умляутами, и не думают ни о каких плохих практик, и к тому же значительно опережают нас в развитии.
 

garrick

Lotus Team
26.10.2009
1 367
152
BIT
364
Кириллица плоха тем, что в зависимости от кодировки системы (Win1251/DOS866/KOI-8/UTF-8 и пр.) вы можете её прочесть, а можете и не прочесть. Т.е. код написанный в одной системе (Windows) может быть нечитаем на другой (Linux/MacOS). C латинским алфавитом, т.е. с большинством символов того же немецкого, испанского или французского языков, такой проблемы нет, в любой кодировке выглядит одинаково. На счёт транслитерации - тут дело вкуса и личных предпочтений. Но если вы захотите впоследствии поделится своими исходниками с тем же немцем, то ему будет понятнее ваш код, если имена переменных будут на английском языке. Всем же известно, что массив это "Array", почему бы не назвать это не crerateMassiv, а createArray? Тем более что половина фразы уже написана по английски.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!