Avatar billede maxmuldjord Nybegynder
19. oktober 2004 - 09:13 Der er 4 kommentarer og
1 løsning

Løfte fra main og ud i ny klasse

Nu har jeg siddet og gloet på min skærm uden at kunne komme videre, jeg skal have løftet det der står i min main ud i en anden (ny) klasse, denne klasse havde jeg tænkt mig skulle virke med en switch, noget i stil med

case A
add new person

case p
print arraylist

Der kommer så 2 funktioner mere hen af vejen, en søg og en slet.

Jeg havde så tænkt at min main kunne se ud som følger:

string answer;
while (!answer==T))
Console.WriteLine("what would you like to do? A)dd person S)earch D)elete person T)erminate

Lyder det helt forkert? Det jeg lige nu er i tvivl om er hvordan jeg får løftet det jeg har lige nu i min main ud derfra på den bedste måde

/*
* Created by SharpDevelop.
* User: Tommy Lauritzen
* Date: 16-10-2004
* Time: 20:30
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
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 override string ToString()
        {
            return (name + " " +phonenumber);
        }
   
           
       
       
        public static void Main(string[] args)
        {
            ArrayList liste=new ArrayList();
            Console.WriteLine("Add name");
            string initialName = Console.ReadLine();
            Console.WriteLine("Add phonenumber");
            string initialPhoneNumber = Console.ReadLine();
            liste.Add(new Person(initialName , initialPhoneNumber));
            for (int i =0; i<liste.Count;i++)
                Console.WriteLine(liste[i]);
            Console.ReadLine();
        }
    }
}
Avatar billede arne_v Ekspert
19. oktober 2004 - 09:35 #1
Prøv:

while(true)
{
  Console.WriteLine("what would you like to do? A)dd person S)earch D)elete person T)erminate    string answer = Console.ReadLine();
  if(answer == "A")
  {
      // tilføj
  }
  else if(answer == "D")
  {
      // slet
  }
  else if(answer == "T")
  {
      break;
  }
}
Avatar billede maxmuldjord Nybegynder
19. oktober 2004 - 09:39 #2
ok, Arne, det prøver jeg når jeg får lidt styr på dette, jeg har, som man kan se, lidt famlende forsøgt mig, jeg er i tvivl om hvordan jeg tilgår det fra min main som man kan se :

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 override string ToString()
        {
            return (name + " " +phonenumber);
        }
    }

    class AddPerson
    {
        public AddPerson()
        {
       
        }
       
        public void AddtoList()
        {
           
       

            ArrayList liste=new ArrayList();
            Console.WriteLine("Add name");
            string initialName = Console.ReadLine();
            Console.WriteLine("Add phonenumber");
            string initialPhoneNumber = Console.ReadLine();
            liste.Add(new Person(initialName , initialPhoneNumber));
            for (int i =0; i<liste.Count;i++)
                Console.WriteLine(liste[i]);
        }
           
       
       
        public static void Main(string[] args)
        {
            Person p = new Person();
            p.AddtoList();
            Console.ReadLine();
        }
    }
}
Avatar billede arne_v Ekspert
19. oktober 2004 - 09:46 #3
Det kan gøre spå mange måder, men her er en:

class AddPerson
    {
        public static void AddToList(ArrayList liste)
        {
            Console.WriteLine("Add name");
            string initialName = Console.ReadLine();
            Console.WriteLine("Add phonenumber");
            string initialPhoneNumber = Console.ReadLine();
            liste.Add(new Person(initialName , initialPhoneNumber));
        }
           
       
       
        public static void Main(string[] args)
        {
            ArrayList liste=new ArrayList();
while(true)
{
  Console.WriteLine("what would you like to do? A)dd person S)earch D)elete person T)erminate");   

  string answer = Console.ReadLine();
  if(answer == "A")
  {
      AddToListe(liste);
  }
  else if(answer == "D")
  {
      // slet
  }
  else if(answer == "T")
  {
      break;
  }
}            for (int i =0; i<liste.Count;i++)
                Console.WriteLine(liste[i]);
        }
    }
}
Avatar billede maxmuldjord Nybegynder
19. oktober 2004 - 11:15 #4
Ja det var noget i den stil jeg havde tænkt mig, nu har jeg lidt at arbejde med. Men kan du forklare hvorfor jeg skal have ArrayList liste=new ArrayList(); nede i main? Og hvorfor AddToList skal være static, det er jeg nødt til at prøve at få styr på. Og et svar den herre 8>)
Avatar billede arne_v Ekspert
19. oktober 2004 - 11:37 #5
Du skal bruge samme liste til flere kald af AddToListe.

AddToList behøver ikke være static, men hvis ikke så skal du have lavet et objekt
at kalde den på. Jeg dandt static mest naturligt.

Og svar.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester