Vill du vara del av diskussionerna i forumet, ställa frågor eller hjälpa andra? Registrera dig här!
Trädvy Permalänk
Medlem
Registrerad
Aug 2020

CS1929 error i C#

class Program { static void Main(string[] args) { First(); Second(); Console.ReadKey(); static void First() { Console.WriteLine("Type a number between 0 and 10: "); int myNumber1 = int.Parse(Console.ReadLine()); string retur = Console.ReadLine(); Console.WriteLine("Okay lets see if it's in our array "); int[] numbers = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; for (int i = 0; i < numbers.Length; i++) { Console.WriteLine(numbers[i]); } Console.WriteLine("Does your number " + myNumber1 + " exist? " + numbers.Contains(myNumber1)); } static void Second() { string[] fillMe = new string[10]; Console.Write("Fill the array with 10 numbers "); for (int i = 0; i < fillMe.Length; i++) { fillMe[i] = Console.ReadLine(); } Console.WriteLine("Type a number: "); int myNumber2 = int.Parse(Console.ReadLine()); string retur = Console.ReadLine(); Console.WriteLine("Okay, let's see if it's in your array "); foreach (var number in fillMe) { Console.WriteLine(number); } Console.WriteLine("Did your number exist? " + fillMe.Contains(myNumber2)); } } }

Hur fixar jag så att sista + fillMe.Contains(myNumber2)); funkar?
försökt byta till int [] fillMe = new... men då vill inte fillMe[i] = Console.ReadLine(); funka.
känns som ett så lätt fel men jag kan inte komma på vart jag kan ändra?

Trädvy Permalänk
Medlem
Plats
Avesta
Registrerad
Maj 2013
Skrivet av karu83:

class Program { static void Main(string[] args) { First(); Second(); Console.ReadKey(); static void First() { Console.WriteLine("Type a number between 0 and 10: "); int myNumber1 = int.Parse(Console.ReadLine()); string retur = Console.ReadLine(); Console.WriteLine("Okay lets see if it's in our array "); int[] numbers = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; for (int i = 0; i < numbers.Length; i++) { Console.WriteLine(numbers[i]); } Console.WriteLine("Does your number " + myNumber1 + " exist? " + numbers.Contains(myNumber1)); } static void Second() { string[] fillMe = new string[10]; Console.Write("Fill the array with 10 numbers "); for (int i = 0; i < fillMe.Length; i++) { fillMe[i] = Console.ReadLine(); } Console.WriteLine("Type a number: "); int myNumber2 = int.Parse(Console.ReadLine()); string retur = Console.ReadLine(); Console.WriteLine("Okay, let's see if it's in your array "); foreach (var number in fillMe) { Console.WriteLine(number); } Console.WriteLine("Did your number exist? " + fillMe.Contains(myNumber2)); } } }

Hur fixar jag så att sista + fillMe.Contains(myNumber2)); funkar?
försökt byta till int [] fillMe = new... men då vill inte fillMe[i] = Console.ReadLine(); funka.
känns som ett så lätt fel men jag kan inte komma på vart jag kan ändra?

För lite kontext antar jag att du menar följande felmeddelande;
Error CS1929 'string[]' does not contain a definition for 'Contains' and the best extension method overload 'Queryable.Contains(IQueryable, TSource)' requires a receiver of type 'IQueryable'

Om du då läser felmeddelandet så ser du att en Array inte definierar någon metod vid namn Contains

Istället för Array kan du därför köra List, alternativt skapa en loop och på så vis se om din array innehåller det du letar efter. Se följande kodsnutt nedan:

// spara ett returvärde så du vet om du hittar en matchning eller ej var res = false; // Loopa igenom din array foreach(var s in string_array){ // Om något index i din array matchar din variabel, sätt returvärdet till true och avbryt loopen. if(s.Equals(mitt_nummer.ToString())){ res = true; break; } } // Kolla returvärdet som sparades i res Console.WriteLine("Matchade det? " + res);

Fractal Design Define R5 MSI
B450 Tomahawk MAX
AMD Ryzen 3700x Msi GTX1080 Corsair Vengeance Pro RGB 32GB @ 3200MHz

Trädvy Permalänk
Medlem
Registrerad
Aug 2020

@Pamudas:
jo precis. Men tyvärr så måste jag använda array. Jag föredrar annars List 9/10 gånger....
Det går inte att lösa utan list eller?

Trädvy Permalänk
Medlem
Registrerad
Jun 2005
Skrivet av karu83:

@Pamudas:
jo precis. Men tyvärr så måste jag använda array. Jag föredrar annars List 9/10 gånger....
Det går inte att lösa utan list eller?

Kolla längst ned i posten du svarade på. Där har du ett exempel på en loop.

Trädvy Permalänk
Medlem
Registrerad
Aug 2020
Skrivet av Curik:

Kolla längst ned i posten du svarade på. Där har du ett exempel på en loop.

Oj, jag är så ledsen. jag måste ha varit super trött för jag såg inget meddelande. Det löste sig fint i alla fall. Tack så mycket!
Det ända jag stör mig på att jag måste trycka enter efter man skrivit in sitt första nummer.

Trädvy Permalänk
Medlem
Plats
Avesta
Registrerad
Maj 2013
Skrivet av karu83:

Oj, jag är så ledsen. jag måste ha varit super trött för jag såg inget meddelande. Det löste sig fint i alla fall. Tack så mycket!
Det ända jag stör mig på att jag måste trycka enter efter man skrivit in sitt första nummer.

Ta bort raden:
string retur = Console.ReadLine();
Så slipper du det

Fractal Design Define R5 MSI
B450 Tomahawk MAX
AMD Ryzen 3700x Msi GTX1080 Corsair Vengeance Pro RGB 32GB @ 3200MHz

Trädvy Permalänk
Medlem
Registrerad
Aug 2020
Skrivet av Pamudas:

Ta bort raden:
string retur = Console.ReadLine();
Så slipper du det

Jepp såg den med. Den är borta. men som sagt att tvingas trycka enter efter varje Int.parse är störigt men hittar ingen lösning om jag inte vill skriva om allt toll TryParse som jag inte orkar

Edit: NVM det funkar! haha så sliten. dags för en paus! tack !!

Trädvy Permalänk
Medlem
Plats
127.0.0.1
Registrerad
Apr 2008
Skrivet av karu83:

Jepp såg den med. Den är borta. men som sagt att tvingas trycka enter efter varje Int.parse är störigt men hittar ingen lösning om jag inte vill skriva om allt toll TryParse som jag inte orkar

Edit: NVM det funkar! haha så sliten. dags för en paus! tack !!

Hade du haft 0-9 istället så hade du ju kunnat använda Console.ReadKey och skippat Enter helt. Lite omständigt att skriva 10 då bara

Intel i7 8700 | ASUS Prime Z370-P | Corsair 16GB 3000MHz | ASUS GTX 1080 8 GB @ 2100MHz/11080MHz | Fractal Design Define S | Corsair RMX750x | Cooler Master Hyper 212 EVO

Trädvy Permalänk
Medlem
Plats
Den mindre gnälliga delen av gnällbältet
Registrerad
Apr 2005
Skrivet av Joppis:

Hade du haft 0-9 istället så hade du ju kunnat använda Console.ReadKey och skippat Enter helt. Lite omständigt att skriva 10 då bara

Att kunna skriva in 10 löser man lätt genom använda en speciell knapp för att berätta för programmet att man har skrivit klart.

Ryzen 3000.