c# Lägga in värden i en array genom användarinmatningar och skriva ut värden från en array
static void Main(string[] args){
int menyval = 0;
while ((menyval = ListaMenyVal()) != 0)
{
Console.Clear();
if (menyval == 1) //Om menyval är lika med ett
{
//Lägger till ny användarprofil
profileInfo d = ReadInfo();
ShowInfo(d);
AddProfileToVector(profiler, d);
//SaveProfiles(d);
}
else if (menyval == 2)
{
//Visar profiler - fungerar ej
ShowProfiles();
}
else if (menyval == 3)
{
//Ändrar användarprofil
}
else if (menyval == 4)
{
//Visar matchningar
}
else if (menyval == 5)
{
//Ta bort profil
//RemoveProfile();
}
else if (menyval == 6)
{
//Avslutar programmet
Console.WriteLine("Tryck 0 för att avsluta programmet");
}
}
}
public static int ListaMenyVal()
{
Console.WriteLine("Välkommen till tinder 2.0!");
Console.WriteLine("----------------------------");
Console.WriteLine("1. Lägg till ny profil");
Console.WriteLine("2. Visa profiler");
Console.WriteLine("3. Ändra din profil");
Console.WriteLine("4. Visa matchningar");
Console.WriteLine("5. Ta bort profil");
Console.WriteLine("6. Avsluta");
Console.WriteLine("----------------------------");
Console.Write("Ange menyval: ");
string menyval = Console.ReadLine();
int val;
while (!int.TryParse(menyval, out val))
{
Console.WriteLine("Välj något av alternativen nedan");
menyval = Console.ReadLine();
}
return val;
}
//Klass för att läsa in en användares inmatningar
public static profileInfo ReadInfo()
{
profileInfo a;
//Interaktion med användare
Console.Write("Namn: ");
a.name = Console.ReadLine();
string gender = "Ange ditt kön (K/M): ";
a.gender = ReadGender(gender);
string age = "Ange din ålder: ";
a.age = ReadInt(age);
string sexuality = "Sexuell läggning(hetero/bi/homo): ";
a.sexuality = ReadSexuality(sexuality);
Console.Write("Personlig beskrivning:\n");
a.personalDescription = Console.ReadLine();
return a;
}
//I want to put this info into an array
static void ShowInfo(profileInfo a)
{
Console.WriteLine("Ditt namn är = {0}", a.name);
Console.WriteLine("Du är en = {0}", a.gender);
Console.WriteLine("Du är = {0} år", a.age);
Console.WriteLine("Du är = {0}", a.sexuality);
Console.WriteLine("Kort beskrivning av dig själv =\n {0}", a.personalDescription);
}
public static int ReadInt(string n)
{
Console.WriteLine(n);
int d = 0;
while (!int.TryParse(Console.ReadLine(), out d))
{
Console.WriteLine("Måste vara ett numeriskt värde");
Console.Write(n);
}
return d;
}
public static string ReadGender (string d)
{
bool found = false;
string f = "";
while (!found)
{
Console.WriteLine(d);
f = Console.ReadLine().ToUpper();
if (f == "K" || f == "M")
{
found = true;
}
else
{
Console.WriteLine("Du har inte angivit ett korrekt värde");
}
}
return f;
}
public static string ReadSexuality(string d)
{
bool found = false;
string s = "";
while (!found)
{
Console.WriteLine(d);
s = Console.ReadLine().ToUpper();
if (s == "BI" || s == "HOMO" || s == "HETERO")
{
found = true;
}
else
{
Console.WriteLine("Du har inte angivit ett korrekt värde");
}
}
return s;
}
//This method doesn´t work
public static profileInfo[] AddProfileToVector(profileInfo[] oldProfileList, profileInfo newProfile)
{
profileInfo[] newProfileList = new profileInfo[oldProfileList.Length + 1];
for (int i = 0; i < oldProfileList.Length; i++)
{
newProfileList[i] = oldProfileList[i];
}
newProfileList[oldProfileList.Length] = newProfile;
return newProfileList;
}
public static void ShowProfiles()
{
//int length = profiler.Length;
//Console.WriteLine(length);
for (int i = 0; i < profiler.Length; i++)
{
profileInfo profil = profiler[i];
Console.WriteLine("Namn: {0}\t Kön: {1}\t Ålder: {2}\t Sexuell läggning: {3}\t Personlig beskrivning: {4}\t",
profil.name, profil.gender, profil.age, profil.sexuality, profil.personalDescription);
}
}
Jag har försökt skapa en array som utökar en annan array, men jag vet inte hur jag skriver värdena. Kommer inte vidare då jag inte förstår vart problemet. Hade varit jättesnällt om någon kunde hjälpa till.
Tack på förhand!
Välkommen till Pluggakuten vanessatiana!
Vi försöker i första hand ge dig tips, så att du själv kan lösa din uppgift.
Tråkigt att ingen gett något svar, och jag har inte använt C# särskilt mycket....
public ....AddProfileToVector(....)
{
...
return newProfileList;
}
Hade du tänkt att metoden skulle "skyffla" en massa data i return-satsen?
Jag kan tänka mig att newProfileList bara är en pekare till där datat antas finnas.
Då måste pekaren peka på en area som är deklarerad på ett sätt så att datat inte "försvinner" efter return-satsen.
Om datat inte "försvinner" efter return-satsen, kommer metoden att konsumera mängder av minne (typiskt fall av "minnesläcka"). Så du bör hitta ett annat sätt där dina programdelar kan dela data.