Nutzereingaben einlesen und speichern in C#?
Hallo,
ich bin an einer Übungsaufgabe, in der ich vom Nutzer eine Zahl X erfragen und anschließend nochmal soviele Zahlen erfragen soll. Diese muss ich in einer Liste oder einem Array speichern, da ich im Anschluss alle Zahlen, die durch drei teilbar sind, wieder ausgeben muss.
Unten seht ihr meinen bisherigen Code. Ich habe noch nicht ganz den Dreh raus, wie genau ich jetzt am besten die Zahlen speichere. Beim untersten Console.ReadLine gibt mir der Compiler auch eine Fehlermeldung.
public partial class Form1 : Form
{
public Form1()
{
Console.WriteLine("Geben Sie eine Zahl ein: ");
double zahlen1 = Convert.ToInt32(Console.ReadLine());
// double, da in der Aufgabe nicht explizit steht, dass die erste Zahl eine ganze Zahl sein muss.
List<int> numbers = new List<int>();
for (int i = 0; i < zahlen1; ++i)
{
Console.WriteLine("Geben Sie eine weitere Zahl ein: ");
numbers.Add(Console.ReadLine());
}
}
}
2 Antworten
Der Aufruf
Console.ReadLine());
liefert dir eine Zeichenreihe. In
numbers.Add(Console.ReadLine());
versuchst du, diese Zeichenreihe in ein Array einzudragen, dass nur int-Werte aufnehmen kann. Das geht natürlich nicht. Du musst die erhaltene Zeichenreihe zunächst in eine Ganzzahl umwandeln.
Versuche bitte mal folgendes:
numbers.Add(Convert.ToInt32(Console.ReadLine()));
beim untersten Console.readLine gibt mir der Compiler auch ne Fehlermeldung.
Lass mich raten.... da wird bemängelt, dass du auf einen Index in deiner Liste zugreifen willst, den es gar nicht gibt.
for(int i = 0; i < zahlen1; ++i)
Das ++i inkrementiert dir i BEVOR es genutzt wird. Der erste Wert ist also nicht 0 sondern 1. Entsprechend ist der letzte Wert nicht i sondern i+1
Schau dir den Unterschied zwischen ++i und i++ mal genau an.
Die obige Antwort ist falsch.
Die Zeile mit ReadLine wird scheitern, da ein String nicht implizit in einen Integer gecastet werden kann.
Das Preinkrement in der Schleife ist richtig. Dieser Ausdruck wird stets nach einem Schleifenlauf ausgeführt.
Stimmt, jetzt wo du es sagts fällts mir auch auf, dankeschön