C# random string från lista till textbox

Permalänk
Medlem

C# random string från lista till textbox

Jag håller på att bygga ett program som ska ta emot en mängd strings som läggs in i en lista (List<string>). Men jag vill att listan ska plocka en random string (alternativt ett index som är kopplad till en text) och sedan skrivas ut mot en textbox.

Visa signatur

Citera om du vill ha svar, hjälpte jag dig, gilla svaret!
AzireVPN - Felkod40

Permalänk
Medlem

Detta borde funka lr tänker jag fel nu..?

Random random = new Random(); //Ger ett nummer mellan 0-100 int randomNumber = random.Next(0, 100); textBox1.Text = list[randomNumber];

Permalänk
Medlem

Om man ska göra den där metoden måste man väl ha en lista som använder int?

Visa signatur

Citera om du vill ha svar, hjälpte jag dig, gilla svaret!
AzireVPN - Felkod40

Permalänk
Medlem

nej det ska fungera, om fast mer korrekt borde väl
random.Next(0, list.Count()-1); ?

Visa signatur

Laptop - MacBook 2.0GHz, 4GB ram, Intel GMA 950
Stationär - i5 3570k @ 4ghz, 8gb ram, 120gb ssd + 2tb hdd, Windows 8 64bit, fractal design arc
Citera så jag hittar tillbaka :)

Permalänk
Medlem
Skrivet av freddyfresh:

Om man ska göra den där metoden måste man väl ha en lista som använder int?

Nae du hämtar fortfarande ut saker ifrån listan med int. om du t.ex skapar en
List<string> hej = new list<string>();

så hämtar du värden ur den med intar vad för datatyp listan har spelar ingen roll när du hämtar ut värden ifrån den

Visa signatur

Laptop - MacBook 2.0GHz, 4GB ram, Intel GMA 950
Stationär - i5 3570k @ 4ghz, 8gb ram, 120gb ssd + 2tb hdd, Windows 8 64bit, fractal design arc
Citera så jag hittar tillbaka :)

Permalänk
Medlem

min kod är:

List<string>[] lista = new List<string>[25];

List[0].Add("text har");
List[1].Add("Mer och mer");

textBox1.Text = ??
Kan inte använda list[randomNumber] i denna situationen iaf.. jag är ganska ny till listor....

Visa signatur

Citera om du vill ha svar, hjälpte jag dig, gilla svaret!
AzireVPN - Felkod40

Permalänk
Medlem

och förresten vore väl inte list.count() -1 den rätta lösningen? eftersom 0-25 och list.count = 25 men om man tar -1 så blir det bara 24 objekt i listan

Visa signatur

Citera om du vill ha svar, hjälpte jag dig, gilla svaret!
AzireVPN - Felkod40

Permalänk
Medlem
Skrivet av freddyfresh:

min kod är:

List<string>[] lista = new List<string>[25];

List[0].Add("text har");
List[1].Add("Mer och mer");

textBox1.Text = ??
Kan inte använda list[randomNumber] i denna situationen iaf.. jag är ganska ny till listor....

Kanske för att du har ett stort L i din kod och den jag postade hade ett litet l.

Permalänk
Skrivet av freddyfresh:

och förresten vore väl inte list.count() -1 den rätta lösningen? eftersom 0-25 och list.count = 25 men om man tar -1 så blir det bara 24 objekt i listan

nej, eftersom om du lägger in 25 objekt i ett List objekt så kommer första på position 0 och det 25:e objektet på position 24.

Permalänk
Medlem

vänta lite, du har gjort en List-array med strängar i? det är ju lite galet, nu har den ju 2 dimentioner

Visa signatur

Laptop - MacBook 2.0GHz, 4GB ram, Intel GMA 950
Stationär - i5 3570k @ 4ghz, 8gb ram, 120gb ssd + 2tb hdd, Windows 8 64bit, fractal design arc
Citera så jag hittar tillbaka :)

Permalänk
Hedersmedlem
Skrivet av freddyfresh:

min kod är:

List<string>[] lista = new List<string>[25];

List[0].Add("text har");
List[1].Add("Mer och mer");

textBox1.Text = ??
Kan inte använda list[randomNumber] i denna situationen iaf.. jag är ganska ny till listor....

I så fall får du använda
lista[0][randomNumber]
men lämpligast är nog att ändra till

List<string> lista = new List<string>(); lista.Add("text har"); lista.Add("Mer och mer"); textBox1.Text = lista[randomNumber]

Permalänk
Medlem

Får en error som säger:

Värdet av indexet låg utanför indexet. Värdet får inte vara negativt. Parameter namn: index.

Visa signatur

Citera om du vill ha svar, hjälpte jag dig, gilla svaret!
AzireVPN - Felkod40

Permalänk
Hedersmedlem
Skrivet av freddyfresh:

Får en error som säger:

Värdet av indexet låg utanför indexet. Värdet får inte vara negativt. Parameter namn: index.

Kör du
random.Next(0, lista.Count()-1)

Permalänk
Medlem

jag kör random.next(0,list.count());

Visa signatur

Citera om du vill ha svar, hjälpte jag dig, gilla svaret!
AzireVPN - Felkod40

Permalänk
Medlem
Skrivet av freddyfresh:

jag kör random.next(0,list.count());

Skriv dit -1 så fungerar det, count svarar med antalet i listan, men indexeringen börjar ifrån 0

Visa signatur

Laptop - MacBook 2.0GHz, 4GB ram, Intel GMA 950
Stationär - i5 3570k @ 4ghz, 8gb ram, 120gb ssd + 2tb hdd, Windows 8 64bit, fractal design arc
Citera så jag hittar tillbaka :)

Permalänk
Medlem

Nu ser min kod ut såhär:

randomNummer = R.Next(0, lista.Count() - 1);
MessageBox.Show("nummer"+randomNummer);
textBox2.Text = array[randomNummer].ToString();

Men nu fick jag meddelandet att minvalue inte får vara högre än maxValue?!
Det är den ju inte!?

Visa signatur

Citera om du vill ha svar, hjälpte jag dig, gilla svaret!
AzireVPN - Felkod40

Permalänk
Medlem

problemet löst.

Hade råkat lägga till objekten i listan genom koden: lista[0] osv = "";
Fixade det nu till lista.Add("");
Så nu funkar allt tack för all hjälp!!

Visa signatur

Citera om du vill ha svar, hjälpte jag dig, gilla svaret!
AzireVPN - Felkod40

Permalänk
Medlem

Du behöver inte använda ToString() när du använder en lista av strängobjekt. Det är lite redundant.

List<string> list = new List<string>(25); list.Add("Apa"); list.Add("Bepa"); list.Add("Cepa"); TextBox tb = new TextBox(); Random rnd = new Random(); tb.Text = list[rnd.Next(0, list.Count - 1)];

Det borde ge önskat resultat.

Visa signatur

Yay!