Skapa lista med hjälp av inmatning?

Permalänk

Skapa lista med hjälp av inmatning?

Hej! Jag vet hur man skapar en lista så att texten sparas.
Men hur gör jag för att kunna skapa fler listor med hjälp av arrays så att mer text sparas?
Tex:
String [] rader = { "Första", "Andra", "Tredje" }; <- hur kopplar man ihop den med listan?
har försökt med att skriva in "rader" i "List<string> information = new List<string>(rader); " men fick bara upp;
System.String[].

List<string> information = new List<string>();
Console.WriteLine("Hej vad heter du? ");
string name = Console.ReadLine();
Console.WriteLine("Hej hur mår du? ");
string mår = Console.ReadLine();
Console.WriteLine("Vad ska du göra imorgon? ");
string göra = Console.ReadLine();

Console.Write(name + " " + mår + " " + göra);

Visa signatur

Define R4 | i5 4460k | ASUS Z97 | 8GB Corsair | Nvidia GeForce GTX960 | Samsung SSD 840 EVO 250GB | Dota2 | C#

Permalänk
Medlem

Jag förstår inte riktigt vad du menar.
Vill du lägga till saker i listan? använd isåfall

information.Add("sak");

Visa signatur

Corsair 750D | i5 4670k | ASUS Z87-a | 8GB Corsair Dominator | Asus GTX770-DC2OC | Samsung 840 EVO 250GB | WD 500GB X2

Permalänk
Skrivet av reflect:

Jag förstår inte riktigt vad du menar.
Vill du lägga till saker i listan? använd isåfall

information.Add("sak");

Nej menar, tex om man vill göra en ny lista och vill att den "gamla" inmatningen ska sparas och hamna någonstans?
Kanske måste använda StreamWriter? Måste dock använda mig av lista

Visa signatur

Define R4 | i5 4460k | ASUS Z97 | 8GB Corsair | Nvidia GeForce GTX960 | Samsung SSD 840 EVO 250GB | Dota2 | C#

Permalänk
Medlem
Skrivet av LadyKurczak:

Nej menar, tex om man vill göra en ny lista och vill att den "gamla" inmatningen ska sparas och hamna någonstans?
Kanske måste använda StreamWriter? Måste dock använda mig av lista

Om jag förstår dig rätt nu vill du alltså kunna spara vad användaren matat in från ditt exempel

Console.WriteLine("Hej vad heter du? "); string name = Console.ReadLine(); Console.WriteLine("Hej hur mår du? "); string mår = Console.ReadLine(); Console.WriteLine("Vad ska du göra imorgon? "); string göra = Console.ReadLine();

Där name, mår och göra ska sparas i en lista så du kan fråga fler människor med samma program, för att sedan kunna skriva ut alltihop där det då står vad människan heter, hur människan mår och vad hen ska göra imorgon?
Så jag liksom förstår vad ditt problem är. Ganska svårt att hjälpa annars haha.

Visa signatur

Corsair 750D | i5 4670k | ASUS Z87-a | 8GB Corsair Dominator | Asus GTX770-DC2OC | Samsung 840 EVO 250GB | WD 500GB X2

Permalänk
Skrivet av LadyKurczak:

Nej menar, tex om man vill göra en ny lista och vill att den "gamla" inmatningen ska sparas och hamna någonstans?
Kanske måste använda StreamWriter? Måste dock använda mig av lista

kan du inte skriva nåt i stil med information.AddArray(information);

Visa signatur

AMD Ryzen 5 3600 | Sapphire R9 280

Permalänk
Skrivet av reflect:

Om jag förstår dig rätt nu vill du alltså kunna spara vad användaren matat in från ditt exempel

Console.WriteLine("Hej vad heter du? "); string name = Console.ReadLine(); Console.WriteLine("Hej hur mår du? "); string mår = Console.ReadLine(); Console.WriteLine("Vad ska du göra imorgon? "); string göra = Console.ReadLine();

Där name, mår och göra ska sparas i en lista så du kan fråga fler människor med samma program, för att sedan kunna skriva ut alltihop där det då står vad människan heter, hur människan mår och vad hen ska göra imorgon?
Så jag liksom förstår vad ditt problem är. Ganska svårt att hjälpa annars haha.

Precis!

Visa signatur

Define R4 | i5 4460k | ASUS Z97 | 8GB Corsair | Nvidia GeForce GTX960 | Samsung SSD 840 EVO 250GB | Dota2 | C#

Permalänk
Medlem

Då tycker jag vi använder en class.

class Data { // Tre "properties", en för varje sak vi vill veta. public string Name { get; set; } public string Feeling { get; set; } public string Plans { get; set; } // en "Object Initializer" - så vi snabbt kan fylla på detta objekt med data. public Data(string name, string feeling, string plans) { this.Name = name; this.Feeling = feeling; this.Plans = plans; } // så vi kan ta Data.ToString() och få ut det nedstående. public override string ToString() { return string.Format("{0} känner sig {1} och ska imorgon {2}", Name, Feeling, Plans); } }

Har försökt att kommentera så gott det går. Antar att du vet vad en class är.

Sedan i vår Main

// Lista av typ 'Data' alltså vår class. List<Data> data = new List<Data>(); // skriv in 2 (eller fler, såklart) namn for(int i = 0; i < 2; i++) { Console.WriteLine("Hej vad heter du? "); string name = Console.ReadLine(); Console.WriteLine("Hej hur mår du? "); string mår = Console.ReadLine(); Console.WriteLine("Vad ska du göra imorgon? "); string göra = Console.ReadLine(); // skapa en instans av vår class och ge den vår info Data information = new Data(name, mår, göra); //lägg till den i listan data.Add(information); } //skriv ut vad alla ska göra osv for (int i = 0; i < data.Count; i++) Console.WriteLine(data[i].ToString());

Visa signatur

Corsair 750D | i5 4670k | ASUS Z87-a | 8GB Corsair Dominator | Asus GTX770-DC2OC | Samsung 840 EVO 250GB | WD 500GB X2

Permalänk
Skrivet av reflect:

Då tycker jag vi använder en class.

class Data { // Tre "properties", en för varje sak vi vill veta. public string Name { get; set; } public string Feeling { get; set; } public string Plans { get; set; } // en "Object Initializer" - så vi snabbt kan fylla på detta objekt med data. public Data(string name, string feeling, string plans) { this.Name = name; this.Feeling = feeling; this.Plans = plans; } // så vi kan ta Data.ToString() och få ut det nedstående. public override string ToString() { return string.Format("{0} känner sig {1} och ska imorgon {2}", Name, Feeling, Plans); } }

Har försökt att kommentera så gott det går. Antar att du vet vad en class är.

Sedan i vår Main

// Lista av typ 'Data' alltså vår class. List<Data> data = new List<Data>(); // skriv in 2 (eller fler, såklart) namn for(int i = 0; i < 2; i++) { Console.WriteLine("Hej vad heter du? "); string name = Console.ReadLine(); Console.WriteLine("Hej hur mår du? "); string mår = Console.ReadLine(); Console.WriteLine("Vad ska du göra imorgon? "); string göra = Console.ReadLine(); // skapa en instans av vår class och ge den vår info Data information = new Data(name, mår, göra); //lägg till den i listan data.Add(information); } //skriv ut vad alla ska göra osv for (int i = 0; i < data.Count; i++) Console.WriteLine(data[i].ToString());

Måste man ha den i main? Eller kan man göra den i class program? Tex:

class Program
{
static int search(List<text> list, int key)
{
for (int i = 0; i < list.Count; i++)

{
if (list[i].date == key)
return i;
}
return -1;
}

och sedan returnera i main?

Visa signatur

Define R4 | i5 4460k | ASUS Z97 | 8GB Corsair | Nvidia GeForce GTX960 | Samsung SSD 840 EVO 250GB | Dota2 | C#

Permalänk
Medlem
Skrivet av LadyKurczak:

Måste man ha den i main? Eller kan man göra den i class program? Tex:

class Program
{
static int search(List<text> list, int key)
{
for (int i = 0; i < list.Count; i++)

{
if (list[i].date == key)
return i;
}
return -1;
}

och sedan returnera i main?

Alla program i C# härstammar från olika klasser. Samt verkar static int search(...) helt irrelevant.
Men du kan självklart placera och fylla på data i dina klasser på vilket sätt som helst - i vilken funktion som helst.

Visa signatur

Corsair 750D | i5 4670k | ASUS Z87-a | 8GB Corsair Dominator | Asus GTX770-DC2OC | Samsung 840 EVO 250GB | WD 500GB X2

Permalänk
Medlem

Jag förstår inte riktigt vad du vill åstakomma?

Vill du lagra data i en Array?

förenklat:

.... while(running){ Be användaren mata in user input sedan: DinArray[i] = Userinput; i++; }

Visa signatur

[IT-Dept]
Ryzen 1700 OC - 32 - 1070

Permalänk
Skrivet av martin_cs:

Jag förstår inte riktigt vad du vill åstakomma?

Vill du lagra data i en Array?

förenklat:

.... while(running){ Be användaren mata in user input sedan: DinArray[i] = Userinput; i++; }

Med hjälp av:
List<string>[] välbefinnande = new list <string[]>;
string[abc] = new string[3]
abc [0] = (namn + " " + mår + " " + göra );

Eftersom man använder [] i en list så görs en Array tillsammans med själva list, om jag förstått det rätt? Men hur gör jag för inmatning två?

Visa signatur

Define R4 | i5 4460k | ASUS Z97 | 8GB Corsair | Nvidia GeForce GTX960 | Samsung SSD 840 EVO 250GB | Dota2 | C#

Permalänk
Skrivet av reflect:

Alla program i C# härstammar från olika klasser. Samt verkar static int search(...) helt irrelevant.
Men du kan självklart placera och fylla på data i dina klasser på vilket sätt som helst - i vilken funktion som helst.

Hmmm...

Ett exempel i boken:
List<string> people = new list<string>();
people.Add("namn på någon");
people.Add("name på en annan");
o.s.v

Men eftersom de redan är inskrivna och inte är en inmatning så förstår jag inte riktigt hur man ska göra.
Ett exempel som jag håller på och tittar på är:

List<string>[] välbefinnande = new list <string[]>;
string[abc] = new string[3]
abc [0] = (namn + " " + mår + " " + göra );
abc[1] = ??
abc[2] = ??
Eftersom det är kopplat med vad användaren fyller i så kommer jag ju få samma resultat om jag skriver;
abc[1] = (namn + " " + mår + " " + göra );
abc[2] = (namn + " " + mår + " " + göra );

Visa signatur

Define R4 | i5 4460k | ASUS Z97 | 8GB Corsair | Nvidia GeForce GTX960 | Samsung SSD 840 EVO 250GB | Dota2 | C#

Permalänk
Medlem

förstår fortfrande inte riktigt vad du vill göra. Jag kanske är korkad

Du vill skapa en lista per person?

Jag hade gjort så här:

1. Gör en class som tar den inmatede datan för att sedan lagra datan i en array.

2. Gör en metod som Lagrar objektet(personen) i en array

3. När du sedan skapar nästa person så skapar du ett nytt objekt för denna(från samma klass givetvis).

t.ex. (ej körbar kod)

class Person{ string [] din_array; person(string data1, string data2, string data3){ din_array = new string[3]; din_array[1] = data1; din_array[2] = data2; din_array[3] = data3; } }

I din main konstruktor & efter du skapat objektet:

// i konstruktorn: ArrayList<Person> personList = new ArrayList<Person>(); // efter du skapat objektet. Lägg till objektet i en array. personList.add(person);

Visa signatur

[IT-Dept]
Ryzen 1700 OC - 32 - 1070

Permalänk
Skrivet av martin_cs:

förstår fortfrande inte riktigt vad du vill göra. Jag kanske är korkad

Du vill skapa en lista per person?

Jag hade gjort så här:

1. Gör en class som tar den inmatede datan för att sedan lagra datan i en array.

2. Gör en metod som Lagrar objektet(personen) i en array

3. När du sedan skapar nästa person så skapar du ett nytt objekt för denna(från samma klass givetvis).

t.ex. (ej körbar kod)

class Person{ string [] din_array; person(string data1, string data2, string data3){ din_array = new string[3]; din_array[1] = data1; din_array[2] = data2; din_array[3] = data3; } }

I din main konstruktor & efter du skapat objektet:

// i konstruktorn: ArrayList<Person> personList = new ArrayList<Person>(); // efter du skapat objektet. Lägg till objektet i en array. personList.add(person);

Ska inte behöva göra en klass för det tydligen... Hmm
Hur gör jag för att skapa fler "mår bra" utan att de gamla försvinner (så att de inte skrivs över varandra)?

Visa signatur

Define R4 | i5 4460k | ASUS Z97 | 8GB Corsair | Nvidia GeForce GTX960 | Samsung SSD 840 EVO 250GB | Dota2 | C#

Permalänk
Medlem

@LadyKurczak:

Varför inte?

Annars får du lösa det såhär:

public class main { string namn, mår, göra, kombinera; string[] din_array = new string [3]; public static void main(String[] args) { while(running){ } } }

Visa signatur

[IT-Dept]
Ryzen 1700 OC - 32 - 1070

Permalänk
Medlem

@LadyKurczak:

Varför inte?

Annars får du lösa det såhär:

public class main { boolean running = true; string namn, mår, göra, kombinera; int i = 0; string[] din_array = new string [3]; string[] lagra_alla = new string [1000]; public static void main(String[] args) { while(running){ Scanner scan = new Scanner(System.in); namn = scan.next(); mår = scan.next(); göra = scan.next(); kombinera = namn + " " + mår + " " + göra; lagra_alla[i] = kombinera; i++; } } }

Denna lösning kan dock max lagra 1000 personer.

Annars får du lösa med ArrayList<String> Lista = new ArrayList ArrayList<String>;

och sedan använda .add när du lägger till

Visa signatur

[IT-Dept]
Ryzen 1700 OC - 32 - 1070

Permalänk
Skrivet av martin_cs:

@LadyKurczak:

Varför inte?

Annars får du lösa det såhär:

public class main { boolean running = true; string namn, mår, göra, kombinera; int i = 0; string[] din_array = new string [3]; string[] lagra_alla = new string [1000]; public static void main(String[] args) { while(running){ Scanner scan = new Scanner(System.in); namn = scan.next(); mår = scan.next(); göra = scan.next(); kombinera = namn + " " + mår + " " + göra; lagra_alla[i] = kombinera; i++; } } }

Denna lösning kan dock max lagra 1000 personer.

Annars får du lösa med ArrayList<String> Lista = new ArrayList ArrayList<String>;

och sedan använda .add när du lägger till

Hur gör jag för att skapa en klass som jag kan koppla till sökfunktion?
Tex med int så är det enkelt;
static int Search (List<person> (en lista skapad i en klass med information; namn & personnummer) list, int key)
{
for (int i = 0; < list.Count; i++
{
if (list[i].personnummer == key)
return i;
}
return -1
}

och sedan kopplar det i main för att få fram om människan finns eller inte.
Hur gör man med string? Har försökt liknande och hittar dessutom ingenting.. Ska man kanske skapa en funktion i programmet där man måste svara med en specifik siffra för att få fram om det existerar eller inte?

Hoppas du förstår mig
// Hopplös "programmerare"

Visa signatur

Define R4 | i5 4460k | ASUS Z97 | 8GB Corsair | Nvidia GeForce GTX960 | Samsung SSD 840 EVO 250GB | Dota2 | C#

Permalänk
Medlem
Skrivet av LadyKurczak:

Hur gör jag för att skapa en klass som jag kan koppla till sökfunktion?
Tex med int så är det enkelt;
static int Search (List<person> (en lista skapad i en klass med information; namn & personnummer) list, int key)
{
for (int i = 0; < list.Count; i++
{
if (list[i].personnummer == key)
return i;
}
return -1
}

och sedan kopplar det i main för att få fram om människan finns eller inte.
Hur gör man med string? Har försökt liknande och hittar dessutom ingenting.. Ska man kanske skapa en funktion i programmet där man måste svara med en specifik siffra för att få fram om det existerar eller inte?

Hoppas du förstår mig
// Hopplös "programmerare"

Antar att det är något liknande du menar?

namespace multiListOrArray { class Person { private string _first_name; private string _last_name; private int _age; private int _ssn; private string _city; public string first_Name { get { return _first_name; } set { _first_name = value; } } public string last_Name { get { return _last_name; } set { _last_name = value; } } public int age { get { return _age; } set { _age = value; } } public int ssn { get { return _ssn; } set { _ssn = value; } } public string city { get { return _city; } set { _city = value; } } public void addInfo(string _fn, string _ln, int __age, int __ssn, string __city) { _first_name = _fn; _last_name = _ln; _age = __age; _ssn = __ssn; _city = __city; } } class Program { static void personInfo(Person _p) { Console.WriteLine("First Name: " + _p.first_Name); Console.WriteLine("Last Name: " + _p.last_Name); Console.WriteLine("Age: " + _p.age); Console.WriteLine("SSN: " + _p.ssn); Console.WriteLine("City: " + _p.city); } static void findPerson(List<Person> list, int key) { foreach (var _p in list) { if(_p.ssn==key) Console.WriteLine(_p.first_Name + " " + _p.last_Name); } } static void Main(string[] args) { List<Person> manyPPL = new List<Person>(); Person[] p = new Person[10]; p[0] = new Person(); p[1] = new Person(); p[2] = new Person(); p[0].addInfo("Kalle", "Svensson", 47, 690202, "Stockholm"); p[2].addInfo("Glen", "Glensson", 89, 270315, "Göteborg"); p[1].first_Name = "Sven-Erik"; p[1].last_Name = "Karlsson"; p[1].age = 62; p[1].ssn = 540122; p[1].city = "Umeå"; manyPPL.Add(p[0]); manyPPL.Add(p[1]); manyPPL.Add(p[2]); personInfo(manyPPL[0]); Console.WriteLine("\n"); personInfo(manyPPL[1]); Console.WriteLine("\n"); personInfo(manyPPL[2]); Console.WriteLine("\n"); Console.WriteLine("--- --- ---"); findPerson(manyPPL, 270315); Console.WriteLine("--- --- ---"); Console.ReadKey(); } } } Output: First Name: Kalle Last Name: Svensson Age: 47 SSN: 690202 City: Stockholm First Name: Sven-Erik Last Name: Karlsson Age: 62 SSN: 540122 City: Umeå First Name: Glen Last Name: Glensson Age: 82 SSN: 270315 City: Göteborg --- --- --- Glen Glensson --- --- ---

Dold text
Visa signatur

Dator: Ett metall chassi med varierande komponenter på insidan.

Permalänk
Skrivet av Creatooz:

Antar att det är något liknande du menar?

namespace multiListOrArray { class Person { private string _first_name; private string _last_name; private int _age; private int _ssn; private string _city; public string first_Name { get { return _first_name; } set { _first_name = value; } } public string last_Name { get { return _last_name; } set { _last_name = value; } } public int age { get { return _age; } set { _age = value; } } public int ssn { get { return _ssn; } set { _ssn = value; } } public string city { get { return _city; } set { _city = value; } } public void addInfo(string _fn, string _ln, int __age, int __ssn, string __city) { _first_name = _fn; _last_name = _ln; _age = __age; _ssn = __ssn; _city = __city; } } class Program { static void personInfo(Person _p) { Console.WriteLine("First Name: " + _p.first_Name); Console.WriteLine("Last Name: " + _p.last_Name); Console.WriteLine("Age: " + _p.age); Console.WriteLine("SSN: " + _p.ssn); Console.WriteLine("City: " + _p.city); } static void findPerson(List<Person> list, int key) { foreach (var _p in list) { if(_p.ssn==key) Console.WriteLine(_p.first_Name + " " + _p.last_Name); } } static void Main(string[] args) { List<Person> manyPPL = new List<Person>(); Person[] p = new Person[10]; p[0] = new Person(); p[1] = new Person(); p[2] = new Person(); p[0].addInfo("Kalle", "Svensson", 47, 690202, "Stockholm"); p[2].addInfo("Glen", "Glensson", 89, 270315, "Göteborg"); p[1].first_Name = "Sven-Erik"; p[1].last_Name = "Karlsson"; p[1].age = 62; p[1].ssn = 540122; p[1].city = "Umeå"; manyPPL.Add(p[0]); manyPPL.Add(p[1]); manyPPL.Add(p[2]); personInfo(manyPPL[0]); Console.WriteLine("\n"); personInfo(manyPPL[1]); Console.WriteLine("\n"); personInfo(manyPPL[2]); Console.WriteLine("\n"); Console.WriteLine("--- --- ---"); findPerson(manyPPL, 270315); Console.WriteLine("--- --- ---"); Console.ReadKey(); } } } Output: First Name: Kalle Last Name: Svensson Age: 47 SSN: 690202 City: Stockholm First Name: Sven-Erik Last Name: Karlsson Age: 62 SSN: 540122 City: Umeå First Name: Glen Last Name: Glensson Age: 82 SSN: 270315 City: Göteborg --- --- --- Glen Glensson --- --- ---

Dold text

Ja typ, fast inmatningen ska inte vara för-bestämd utan användaren ska skriva in det själv

Visa signatur

Define R4 | i5 4460k | ASUS Z97 | 8GB Corsair | Nvidia GeForce GTX960 | Samsung SSD 840 EVO 250GB | Dota2 | C#

Permalänk
Medlem
Skrivet av LadyKurczak:

Ja typ, fast inmatningen ska inte vara för-bestämd utan användaren ska skriva in det själv

Ja naturligtvis, det var bara ett exempel på hur du menade.
Men om du vill ha inmatnings exempel också..

static int personCount = 0; static List<Person> manyPPL = new List<Person>(); static Person[] p = new Person[10]; static void personInfo(Person _p) { Console.WriteLine("First Name: " + _p.first_Name); Console.WriteLine("Last Name: " + _p.last_Name); Console.WriteLine("Age: " + _p.age); Console.WriteLine("SSN: " + _p.ssn); Console.WriteLine("City: " + _p.city); } static void addPerson() { Console.Clear(); Console.Write("First Name: "); p[personCount].first_Name = Console.ReadLine(); Console.Write("\nLast Name: "); p[personCount].last_Name = Console.ReadLine(); Console.Write("\nAge: "); p[personCount].age = Convert.ToInt32(Console.ReadLine()); Console.Write("\nSSN: "); p[personCount].ssn = Convert.ToInt32(Console.ReadLine()); Console.Write("\nCity: "); p[personCount].city = Console.ReadLine(); manyPPL.Add(p[personCount]); personCount+=1; } static void Main(string[] args) { for (int i = 0; i < 9; i++) { p[i] = new Person(); } addPerson(); Console.Clear(); personInfo(manyPPL[0]); Console.ReadKey(); }

Dold text
Visa signatur

Dator: Ett metall chassi med varierande komponenter på insidan.