C# Array erstellen - Wochentage und Temperatur?

...komplette Frage anzeigen

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Ich würde ehrlich gesagt ein Dictionary erstellen. Dies ist im Grunde nichts anderes, als ein assoziatives Array, heißt, statt dem Index, kannst du einen beliebigen Typ als Key wählen. Als Key nutzt du ein Enum, welches alle Wochentage auflistet.

using System;
using System.Collections.Generic;

public class Test { private enum Days { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday };
public static void Main() { var temperaturesPerWeek = new Dictionary[Days, int]{ // spitze Klammern!
{ Days.Monday, 17 }, { Days.Tuesday, 22 }, { Days.Wednesday, 10 }, { Days.Thursday, 19 }, { Days.Friday, 21 }, { Days.Saturday, 22 }, { Days.Sunday, 27 } };
foreach(var data in temperaturesPerWeek){ Console.WriteLine(data.Key.ToString() + ": " + data.Value); } } }

Statt | solltest du natürlich die Spitzen Klammern nutzen! In dem Editor von GF sind sie leider nicht erlaubt.

Um dem Dictionary nicht inital einen Wert zuweisen, gibt es entweder die Methode Add oder den Indexer:

temperaturesPerWeek[Days.Monday] = 19;

Weitere Informationen zu Dictionarys findest du in der Dokumentation von Microsoft: https://msdn.microsoft.com/de-de/library/xfhwa508(v=vs.110).aspx

Danke,

Das werde ich gleich mal Ausprobieren. 

Aber geht sowas auch mit dem Array? 

0
@ANDROUDT

Nein.

Du kannst höchstens in Kombination mit einem Enum arbeiten:

using System;

public class Test { private enum Weekdays { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday };
public static void Main() { var days = Enum.GetValues(typeof(Weekdays)); int[] temperatures = new int[days.Length];
foreach(var day in days) { Console.WriteLine(string.Format("{0}: {1}", day.ToString(), temperatures[(int)day])); } } }
1
@regex9

Oder du erstellst dir ein Struct / eine Hilfsklasse, die Temperatur und Name des Wochentags speichert. Dann erstellst du ein Array, welches diesen neuen Typ aufnimmt:

using System;

public struct DayData {
public string Day;
public int Temperature;
}
public class Test
{
public static void Main()
{
DayData[] days = new DayData[] {
new DayData { Day = "Monday", Temperature = 22 },
new DayData { Day = "Tuesday", Temperature = 23 },
new DayData { Day = "Wednesday", Temperature = 19 },
new DayData { Day = "Thursday", Temperature = 22 },
new DayData { Day = "Friday", Temperature = 26 },
new DayData { Day = "Saturday", Temperature = 27 },
new DayData { Day = "Sunday", Temperature = 21 }
};
foreach(var day in days)
{
Console.WriteLine(string.Format("{0}: {1}", day.Day, day.Temperature));
}
}
}
0

Erstelle noch ein array des typen String in dem du für jeden Wochentag, den String eines Wochentags speicherst. Außerdem "i+1" wird nicht funktionieren, da man somit über das Array Limit hinaus kommt wenn i = anzahl -1 ist.

Danke für die Antwort. :-)

Wie würde es denn dann aussehen? 

Ich habe keinen Plan wie es mit String Array gehen soll...

0
@ANDROUDT
using System;

public class Test { public static void Main() { string[] weekdays = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" }; int[] temperatures = new int[weekdays.Length];
for(int i = 0; temperatures.Length > i; ++i) Console.WriteLine(string.Format("{0}: {1}", weekdays[i], temperatures[i]));
} } }
1

Würde ich anders machen! Speicher doch deine Wochentage in einem Enum!

Montag die 0, Dienstag die 1, Sonntag die 6.

Dann nimmste dein Array und schreibst dir da die Temperaturen rein.

Dann fragst du noch ab, was im enum die (bsp:) 3 ist und dann weißt du auch den tag dazu

Vielen Dank, 

Würde es auch nur mit Array und einer Schleife gehen? 

Das mit dem Enum werde ich aber versuchen zu realisieren. 

0
@ANDROUDT

Ja klar geht das auch. Entweder machst du eine eigene Klasse mit Wochentag und Temperatur als Eigenschaften

Oder du nimmst 2 Arrays und speicherst beides parallel

Oder du nimmst eine sortedList

Oder mit Enum probieren

Es gibt verschiedene Ansatzwege

1

Was möchtest Du wissen?