Форум программистов
 
О проблемах с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 26.12.2018, 20:41   #1
usher_93
 
Регистрация: 26.12.2018
Сообщений: 5
По умолчанию Как вывести случайный enum в массиве enum

В этом коде в массиве enum не могу вывести случайный enum с помощью r.Next()

Код:
enum Cat
{
	whiskas = 200,
	milk = 120,
	porridge = 130,
	fish = 120,
	meat = 150,
	bread = 100,
	water = 5,
	vegetable = 80
}

void Main()
{
	Random r = new Random();
	int initial = r.Next(50, 100);
	int desirable = r.Next(50, 500);
    Console.WriteLine($"Начальный уровень сытости кота: {initial}");
    Console.WriteLine($"Желаемый уровень сытости кота: {desirable}");

		
    Cat[] enums = {Cat.whiskas, Cat.milk, Cat.porridge, Cat.fish, Cat.meat, Cat.bread, Cat.water, Cat.vegetable};
		
	Console.WriteLine(r.Next(enums[0],enums[enums.Length-1]));
}

Последний раз редактировалось usher_93; 26.12.2018 в 20:47.
usher_93 вне форума Ответить с цитированием
Старый 26.12.2018, 20:45   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,503
По умолчанию

Посмотрите какие параметры у r.Next() и что оно возвращает.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 26.12.2018, 20:49   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,103
По умолчанию

Генерите индекс
Код:
Console.WriteLine(enums[r.Next(0,enums.Length-1)]);
p51x вне форума Ответить с цитированием
Старый 26.12.2018, 20:54   #4
usher_93
 
Регистрация: 26.12.2018
Сообщений: 5
По умолчанию

Спасибо
usher_93 вне форума Ответить с цитированием
Старый 26.12.2018, 21:13   #5
ZnZ
Пользователь
 
Регистрация: 14.06.2017
Сообщений: 45
По умолчанию

О мои глаза...
Не проще юзать готовую функцию что бы получить всех котов? А не ручками писать всех котов в массив?
Код:
Cat[] enums = (Cat[])Enum.GetValues(typeof(Cat))
И в коде
Код:
Console.WriteLine(enums[r.Next(0,enums.Length-1)]);
не нужно добавлять -1, ибо это крайнее число которое является лимитом, если написать r.Next(0, 1); то всегда будет результат 0

Последний раз редактировалось ZnZ; 26.12.2018 в 21:16.
ZnZ вне форума Ответить с цитированием
Ответ
Купить рекламу на форуме 20000 рублей в месяц

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
c++ enum tanek Помощь студентам 1 06.12.2011 03:43
как использовать Enum в Java? 3dg_fan Общие вопросы по Java, Java SE, Kotlin 2 19.09.2011 16:31
Enum. Как выставить нужное значение? TwiX Общие вопросы C/C++ 12 04.09.2011 09:39
enum Syltan Общие вопросы C/C++ 6 26.11.2009 19:24
Работа с enum istoe Microsoft Office Excel 2 28.08.2009 11:53


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS