Ich studiere bei TAFE, aber die Klasse und ich bekommen überhaupt keine Hilfe von meinem Dozenten.C# Textdatei lesen find min max durchschnittlich
Ich muss aus einer TXT-Datei lesen und die Min Max und Durchschnitt davon finden und es auf der Konsole ausdrucken.
Die vorherige Aufgabe war es, min max Durchschnitt von einem Array zu bekommen und ich habe dies geschrieben und es funktioniert gut. Ich benutze VS2012.
Ich habe den Code geschrieben, um die Textdatei zu lesen und auf die Konsole zu drucken - aber ich kann nicht die Min Max und Durchschnitt finden. Ich bekomme "Objektverweis nicht auf eine Instanz eines Objekts festgelegt." wenn ich das Programm starte.
Beachten Sie, dass ich den gleichen Code verwendet habe, um min max Durchschnitt von einem Array zu finden ... Ich denke, das könnte das Problem sein, aber ich kann es nicht herausfinden !!
Hier ist mein Code für das Array ...
static void Main(string[] args)
{
int[] hoursArray = { 1, 24, 9, 7, 6, 12, 10, 11, 23, 8, 2, 9, 8, 8, 9, 7, 9, 15, 6, 1, 7, 6, 12, 10, 11, 23, 1, 2, 9, 8 };
for (int i = 0; i < hoursArray.Length; i++)
{
Console.WriteLine(hoursArray[i].ToString());
}
{
{
int low = hoursArray[0];
for (int index = 1; index > hoursArray.Length; index++)
{
if (hoursArray[index] < low)
{
low = hoursArray[index];
}
}
Console.WriteLine("Lowest Hours Parked = " + low);
int high = hoursArray[0];
for (int index = 1; index < hoursArray.Length; index++)
{
if (hoursArray[index] > high)
{
high = hoursArray[index];
}
}
Console.WriteLine("Highest Hours Parked = " + high);
int total = 0;
double average = 0;
for (int index = 0; index < hoursArray.Length; index++)
{
total = total + hoursArray[index];
}
average = (double)total/hoursArray.Length;
Console.WriteLine("Average Hours Parked =" + average.ToString("N"));
Console.ReadLine();
}
}
}
}
}
Wie erwähnt das funktioniert gut. Jetzt für mein Problem ... Ich habe den Code geschrieben, wie pro unten mit meinen Kommentaren, die Daten aus der Textdatei anzuzeigen ...
static void Main(string[] args)
{
StreamReader hours = new StreamReader("hours.txt");
string number = "";
while (number != null)
{
number = hours.ReadLine();
if (number != null)
Console.WriteLine(number);
}
//list of numbers above is all ok when running program
int total = 0;
double average = 0;
for (int index = 0; index < number.Length; index++)
{
total = total + number[index];
}
average = (double)total/number.Length;
Console.WriteLine("Average = " + average.ToString("N2"));
int high = number[0];
for (int index = 0; index < number.Length; index++)
{
if (number[index] > high)
{
high = number[index];
}
}
Console.WriteLine("Highest number = " + high);
int low = number[0];
for (int index = 0; index > number.Length; index++)
{
if (number[index] < low)
{
low = number[index];
}
}
Console.WriteLine("Lowest number = " + low);
hours.Close();
Console.ReadLine();
}
}
}
Das Problem in Ihrem zweiten Teil des Codes wird Sie in den Zahlen lesen, aber nicht speichern, sie überall, also nein, man kann sie benutzen, später. Sie lesen sie alle in der Zahl ein (vorausgesetzt, dass niemand in der Mitte Ihrer Datei einen cat geschrieben hat), aber Sie platzieren ihn dann nicht in ein Array oder eine Liste. Nehmen Sie dies als Hinweis und sehen Sie, ob dies Ihnen hilft – BugFinder
Sie speichern nur die erste Zahl in einer String-Variablen und Sie durchlaufen die Zeichen dieser Zeichenfolge, um die Summe, High und Low zu berechnen. Erstellen Sie stattdessen eine Liste, und lesen Sie alle Zeilen, nicht nur die erste Zeile (die Bedingung in while sollte sich ändern), geben Sie die Zeichenfolge für jede Zeile in ganze Zahlen und speichern Sie die ganze Zahl in der Liste (oder einem Array). –