30. oktober 2004 - 16:34Der er
38 kommentarer og 1 løsning
søge i arraylist med seqentialsearch
ja kan man det? hvis jeg nu har:
int searchKey, int searchResult;
searchKey = Convert.ToInt32(Console.ReadLine()); //så indtatser man telefonnummer man gerne vil finde searchResult= SequentielSearch(searchKey, liste)
og så på den måde finde den plads på ArrayList=liste der holder mit telefonnummer og så med en if sætning spørge om man vil slette nummeret, hvis man vil det så bruge RemoveAt ? lyder det helt gak?
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
det ser spændende ud, kan jeg anvende det i en else if? Jeg må hellere poste lidt af min main :
public static void Main(string[] args) { int searchKey; int searchResult; ArrayList liste=new ArrayList(); while(true) { Console.WriteLine("what would you like to do? A)dd person D)elete person T)erminate");
Jeg sidder som sædvanligt og roder med halve oplysninger fra vores bog, jeg har indtryk at at det er ligemeget hvordan vi kommer frem til resultatet og så var en SequentialSearch det eneste jeg kunne finde. Men jeg er sikker på at andre måder kan anvendes uden at jeg får "ballade" med min lærer.
når jeg gør som nedenfor så udskriver den nummeret når man søger men ikke den plads på listen som nummeret har og det skal jeg vel bruge for at slette?
else if(answer == "D")
{ searchKey=Convert.ToInt32(Console.ReadLine()); searchResult = liste.IndexOf(searchKey); Console.WriteLine("The phonenumber was found in pos:{0}\n",searchKey);
class MainClass { public static void Main(string[] args) { ArrayList list = new ArrayList(); list.Add("A"); list.Add("BB"); list.Add("CCC"); foreach(object o in list) Console.WriteLine(o); int ix_bb = list.IndexOf("BB"); Console.WriteLine(ix_bb); list.RemoveAt(ix_bb); foreach(object o in list) Console.WriteLine(o); } }
ok, det var en fejl jeg ikke havde fået rettet men når jeg nu kun har et nummer i min liste skrive den ud på plads -1, skulle det ikke være nul?
Her er min main som den ser ud nu:
public static void Main(string[] args) { int searchKey; int searchResult; ArrayList liste=new ArrayList(); while(true) { Console.WriteLine("what would you like to do? A)dd person D)elete person T)erminate");
{ searchKey=Convert.ToInt32(Console.ReadLine()); searchResult = liste.IndexOf(searchKey); Console.WriteLine("The phonenumber was found in pos:{0}\n",searchResult);
} else if(answer == "T") { break; } } for (int i =0; i<liste.Count;i++) Console.WriteLine(liste[i]); Console.ReadLine(); } } }
hmmm, det er jeg ikke med på Arne, det må du undskylde men når jeg indtaster et navn og tlf. nummer og bruger f.eks 55 som telefonnummer og når jeg kommer til min søgning og så indtaster 55 så siger den at 55 var fundet på plads -1?
D.v.s. hvis du gemmer Person objekter i listen så skal du bruge IndexOf til at søge efter et Person objekt ikke en streng som indeholder noget information.
ville det være bedre at forsyne hver person objekt med et nummer (jeg ved ikke hvordan men det kan vel gøres)og så bruge det til at søge på og slette? Det kunne være jeg lige skulle poste hele min kode så er det måske nemmere at finde ud af?
using System; using System.Collections;
namespace Phonebook { class Person { private string name; private string phonenumber;
public string Name { get {return name;} set {name = value;} } public string PhoneNumber { get {return phonenumber;} set {phonenumber = value;} } public Person(string initialName, string initialPhoneNumber) { name=initialName; phonenumber=initialPhoneNumber; }
public static void Main(string[] args) { int searchKey; int searchResult; ArrayList liste=new ArrayList(); while(true) { Console.WriteLine("what would you like to do? A)dd person D)elete person T)erminate");
{ searchKey=Convert.ToInt32(Console.ReadLine()); searchResult = liste.IndexOf(searchKey); Console.WriteLine("The phonenumber was found in pos:{0}\n",searchResult);
} else if(answer == "T") { break; } } for (int i =0; i<liste.Count;i++) Console.WriteLine(liste[i]); Console.ReadLine(); } } }
Du mener at jeg ikke behøver at tilføje et fortløbende nummer? Efterhånden som man tilføjer til listen? Men når du skriver "den" om at retunere et person objekt, havd mener du der?
Jeg takker naturligvi for dit tilbud om et eksempel og er spændt på at se det. Men nu gætter jeg lidt - hvad hvis jeg havde en string searchKey i stedet for? er det noget i den stil du mener?
public Person FindByName(string name) { for(int i = 0; i < list.Count; i++) { Person p = (Person)list[i]; if(p.Name == name) { return p; } } return null; }
public Person FindByPhoneNumber(string phonenumber) { for(int i = 0; i < list.Count; i++) { Person p = (Person)list[i]; if(p.PhoneNumber == phonenumber) { return p; } } return null; }
public void RemoveByName(string name) { Person p = FindByName(name); if(p != null) { list.Remove(p); } }
public void RemoveByPhoneNumber(string phonenumber) { Person p = FindByPhoneNumber(phonenumber); if(p != null) { list.Remove(p); } }
public void Print(TextWriter tw) { for(int i = 0; i < list.Count; i++) { tw.WriteLine(list[i]); } } }
class Test { public static void Main(string[] args) { PhoneBook pb = new PhoneBook(); while(true) { Console.Write("what would you like to do? A)dd person D)elete person P)rint list T)erminate "); string answer = Console.ReadLine().ToUpper();
Hej Arne, beklager, jeg er først kommet til computeren nu, pokker til søndag med arbejde ind imellem, jeg glæder mig til at "hygge" mig med opgaven, jeg læste lidt på det i går og jeg tror jeg har et par spørgsmål men det vender jeg lige tilbage med. Naturligvis point og endnu en gang tusind tak!
Hej Arne, jeg er ved at kikke på koden, har haft alt for travlt med andre og mindre spændende ting men nu skulle jeg kunne komme igang. Men jeg syntes ikke at du har fået opdateret dine points?
Points er OK men det er "top list point" ikke "point statistik point".
Prøv og klik på mit navn.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.