Arrayer
Jag vill att användaren matar in ett antal namn i listan. Tillslut vill jag att programmet fråga användaren om en valfritt namn. Och när användaren har skrivit valfritt namnet då ska programmet berätta hur många gånger namnet har kommit från det tidigare namnListan:
Programmet som jag skrev:
string[] namnArray = new string[10];
Console.WriteLine("Skriv all dina namn nedan");
for (int i = 0; i < namnArray.Length; i++)
{
Console.ForegroundColor = ConsoleColor.Yellow;
namnArray[i] = Console.ReadLine();
Console.ForegroundColor = ConsoleColor.White;
Console.Write("Vill du skriva en till namn? ");
Console.WriteLine("\n");
}
Console.WriteLine("Skriv en valfri Namn:");
string valfri = Console.ReadLine();
..........🙁................
något tips please!
Loopa igenom listan och räkna hur många gånger "valfri" förekommer.
har inte uppfattad!
Det är onödigt att fråga om användaren vill mata in en sträng till när den inte har något val. Man matar alltid in 10 strängar.
Det är det uppgiften som formulerade så, och jag funderade på att skapa en nej eller ja metod så att det blir med ja försätt och med nej skulle programmet fråga om en valfritt namn:
bifoga gärna uppgiften. :)
Vet du hur man skriver ut element 0,1,2,3... en i taget med console.Write()?
Många namn
Skapa ett program där användaren får mata in så många namn som hen vill upp till ett maximalt antal av 200. Användaren ska inte behöva bestämma hur många namn hen vill mata in i förväg, fråga i stället efter varje inmatat namn om hen vill mata in ett till namn.
Efter att användaren har matat in alla namn så ska hen få skriva in valfritt namn, programmet ska berätta hur många gånger detta namn förekommer i listan av de tidigare inmatade namnen.
Här är frågan som ställdes!
Du har inte riktigt gjort rätt.
Du borde ha en while loop som loopar så länge användaren vill ange ett nytt namn.
Just nu tvingar du användaren att alltid ange 10 namn.
Jag fastnade i den sista uppgiften med många försök:
Shali_47 skrev:Jag fastnade i den sista uppgiften med många försök:
Ska det stå mer än en rad här? Jag ser inte mer.
Även trots det kanske inte är optimalt, så är det kanske lättast att göra arrayen så pass stor att den kan rymma 200 namn.
En do/while loop hade varit suverän här.
Välj något ord, typ "klar" för att bryta loopen:
Låt loopen köras så länge man inte skrivit in 200 namn, eller tills användaren skriver "klar".
Börja där. Om du inte har en aning om vad det är jag pratar om, börja här:
https://www.w3schools.com/cs/cs_while_loop.php
Om något är oklart, så skriv här så försöker vi formulera det på ett tydligare sätt.
Om du vill vara mer fancy kan du lyssna efter ett knapptryck som bryter loopen, men det är isf något du borde kika på efter du har löst uppgiften.
Menar du att in i while loopen behöver jag sedan skapa en if sats för att jämföra för användaren om hen vill försätta eller göra klar sin inmatning eller?
exempelvis:
deklarering av en int med värdet 0
while
int namn < 200
string bla = console.readline();
här ska jag kommentera för hen "skriv nej om du inte vill försätta med inmatningen"
int namn++;
👇
här menar jag om jag vill skapa en if sats som kan jämföra on hen inte vill försätta:
tex:
if bla == "nej"
ok då skriv en valfritt namn
Ja, så kan du göra, men det som är bra med en do while loop är att du vill just köra minst en gång innan användaren får ett alternativ.
Här har du en liten mall med lite instruktioner.
public static void Main(string[] args)
{
// Skapa din array
// skapa andra användbara variabler
do
{
// Ta emot input
// lägg till i arrayen
// öka i
}
while (i < 200 && ...);
}
Du kan så klart ändra "klar" till vad du vill.
Din metod fungerar också, men tänk då på att du måste använda Equals och inte == för att jämföra strängar. s1==s2 gör inte vad du tror den gör, utan den jämför om dessa två strängar har samma minnesadress, vilket de aldrig kommer att ha om inte s1=s2. Du vill veta om värdet är densamma i strängarna, varav du måste använda Equals.
In i do blocket
if(string name == "nej"){
console.writeline("Då skriv en valfritt namn");
string valfri = console.readline();
hur skulle jag forklara programmet medan användaren skriver en valfritt namn, då programmet ska berätta hur många gånger namnet har kommit från deta tidigare namnListan.
}
do
ber användaren att inmata sina namn
skriv ut "Vill du inmata en till, Annars skriv nej"
variabel namn++;
om användaren skriver nej
skriv ut "Då skriv en valfritt namn"
//Här behöver jag en till sträng variabel som användaren skulle inmata sitt valfritt rätt?
//När användaren har skrivit sitt valfritt
den del?
Skriv ut "namnet du skrev har kommit så många gånger" + " från det tidigare namnListan"
medan variabel namn < 200;
du behöver inte ha en if-stats i do-blocket. Om du kollar i while-loopen så har jag hintat att du skall ha ett till condition.
en do while fungerar så här:
Utför do blocket
Kolla conditions
Utför do blocket
Kolla conditions
.
.
.
Användaren måste ange minst ett namn, annars är det rätt meningslöst.
Användaren anger namn ett:
är i < 200? Ja. Har användaren ... ?
Skriv in ett nytt namn...
.
.
.
Hänger du med på varför du inte behöver en if-sats?
Du hade endast behövt en if-sats om du vill kunna bryta dig ur programmet utan att man angett ett enda namn, men jag tycker det är meningslöst att köra då.
använde break i min första forloop sedan hade jag skapat en sökning som skulle jämföra namnet från det tidigare namnListan, Känns bra och då släpper jag också tvinga användaren för inmatningen. Bra du sagt i början och kände också tvingande när jag som användaren använde programmet!