Я пытаюсь создать программу, которая выбирает случайное значение из двумерного массива и присваивает значения двум переменным.
В массиве есть 2 значения: «песня» и «исполнитель». Я хочу, чтобы он выбрал случайную песню и присвоил значение «песня» и «исполнитель» двум отдельным переменным. Например, если бы песня была «song1», а исполнитель этой песни был «artist1», я бы хотел, чтобы переменная с именем selectedsong была назначена «song1», а selectedartist — «artist1».
Я пытался использовать Dim (тестирование Dim), но я не знаю, как использовать его в двумерном массиве.
Dim songart(,) As String = {{"song1", "artist1"},{"song2","artist2"}}
Dim testing(New Random().Next(0, testing.Length - 1))
Я только хочу, чтобы у программы было название песни и исполнитель песни.
Public Class FormRandom
Private Shared Rdm As New Random
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim songart(,) As String = {{"song1", "artist1"}, {"song2", "artist2"}, {"song3", "artist3"}, {"song4", "artist4"}}
Dim RndNo As Integer = Rdm.Next(0, (songart.GetLength(0)))
Dim SoundName As String = songart(RndNo, 0)
Dim ArtistName As String = songart(RndNo, 1)
TextBox1.Text = SoundName
TextBox2.Text = ArtistName
End Sub
End Class
Да, я не думал, что длина вернет длину обоих измерений. Будет обновлять код
songart.GetLength(0)-1
возвращает 3 (я добавил больше элементов)
Я тоже, я протестировал код, и он выводит только song1 и artist1.
Извините, кажется, я только что получил то же значение после тестирования примерно 5 раз? Каковы шансы! Спасибо за помощь :)
правильно. может быть, я неправильно понимаю требование? вы можете отбросить -1, иначе он никогда не вернет последнее измерение
обновленный код. если это не то, что вы хотите, удалите это
@ Джими Понял. (я не очень использую многомерные массивы)
Предложение. Измените Dim Rdm As New Random на Private Shared Rdm As New Random. Один экземпляр случайного класса почти всегда является лучшей политикой.
Мне пришлось изменить несколько вещей, но теперь он работает полностью. Спасибо всем за помощь
Что, если вы также хотите узнать продолжительность песни или год? Жанр? Вы знаете, как построить класс? В любом случае, см. Массив.GetUpperBound. Объявите свой генератор случайных чисел как Поле:
private rndSong As Random = New Random()
. Тогда у вас может быть (где-то):Dim nextSong = rndSong.Next(songart.GetUpperBound(0) + 1)
иDim Song as String = songart(nextSong, 0) Dim Artist as string = songart(nextSong, 1)
. Если это не конкретное задание, посмотрите, как можно создать класс с различными свойствами (и методами).