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

Тема в разделе "Java", создана пользователем rn3rjd, 9 июл 2015.

  1. rn3rjd

    rn3rjd Member

    Регистрация:
    12 июн 2015
    Сообщения:
    7
    Симпатии:
    0
    Написал такой метод:
    Код (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;
        }
       
    }
     
    Он возвращает массив указанной размерности заполненный псевдослучайными числами в заданном диапазоне значений. Но мне кажется, что то я с логикой перехимичил, какой то уж больно громоздкий код, для простой задачи.. Раскритикуйте пожалуйста. Укажите на логические ошибки. Да и в целом, что в этом коде не так. Заранее спасибо всем, кто откликнется!
     
  2. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    770
    Симпатии:
    50
    А обязательно делать все эти if проверки? Разве не будет работать

    Код (Java):
    massiv [i]= from + (int)(Math.random() * ((before - from) + 1))
    И если уж они вдруг нужны (if'ы), то неплохо бы было дополнить их else, а то получается, что если первое условие удовлетворяет для заполнения massiv , то все последующие всё равно проверяются тоже.
     
  3. Kmet

    Kmet Well-Known Member

    Регистрация:
    25 май 2006
    Сообщения:
    1.017
    Симпатии:
    1
    вы просто подошли не стой стороны
    see this

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

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

    -master- Well-Known Member

    Регистрация:
    14 янв 2012
    Сообщения:
    629
    Симпатии:
    18
    Чем же кирилица плоха? Немцы, к примеру, пишут по немецки, с умляутами, и не думают ни о каких плохих практик, и к тому же значительно опережают нас в развитии.
     
  5. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    770
    Симпатии:
    50
    Кириллица плоха тем, что в зависимости от кодировки системы (Win1251/DOS866/KOI-8/UTF-8 и пр.) вы можете её прочесть, а можете и не прочесть. Т.е. код написанный в одной системе (Windows) может быть нечитаем на другой (Linux/MacOS). C латинским алфавитом, т.е. с большинством символов того же немецкого, испанского или французского языков, такой проблемы нет, в любой кодировке выглядит одинаково. На счёт транслитерации - тут дело вкуса и личных предпочтений. Но если вы захотите впоследствии поделится своими исходниками с тем же немцем, то ему будет понятнее ваш код, если имена переменных будут на английском языке. Всем же известно, что массив это "Array", почему бы не назвать это не crerateMassiv, а createArray? Тем более что половина фразы уже написана по английски.
     
Загрузка...

Поделиться этой страницей