C# :: Aufgabe #55 :: Lösung #3
3 Lösungen

#55
Aktuellen Aktienkurs auslesen und ausgeben
Fortgeschrittener - C#
von Gustl
- 08.11.2013 um 19:57 Uhr
Schreibe ein Konsolenprogramm welches den aktuellen Aktienkurs von eine Aktien deiner Wahl ausgibt.
Benutze hierfür eine API. Als kleine Anregung: yahoo finance API
Benutze hierfür eine API. Als kleine Anregung: yahoo finance API
#3

von aheiland (650 Punkte)
- 13.03.2015 um 16:13 Uhr

class Program { static void Main(string[] args) { Random zufall = new Random(); int found = 0; do { var symbol = "" + (char)zufall.Next('A', 'Z' + 1) + (char)zufall.Next('A', 'Z' + 1); var pf = new Finance(symbol).portfolio; if (pf != null) { found++; Console.WriteLine("Name: " + pf.name); Console.WriteLine("Ask: " + pf.ask + " Bid: " + pf.bid); Console.WriteLine("Open: " + pf.open); } } while (found < 5); Console.WriteLine("Finished"); Console.ReadKey(); } } class Finance { private string symbol; public Finance(string symbol) { this.symbol = symbol; } private Portfolio _portfolio; public Portfolio portfolio { get { if (_portfolio == null) _portfolio = getPortfolio(); return _portfolio; } } private Portfolio getPortfolio() { Portfolio pf = new Portfolio(); try { var deS = getJsonReader(); do { if (deS.TokenType == JsonToken.PropertyName && deS.ValueType == typeof(String)) { var value = Portfolio.Fields.FirstOrDefault(v => v.Equals(deS.Value)); if (value != null) { deS.Read(); if (value.Equals(Portfolio.Fields.First()) && deS.Value == null) { break; } pf.set(value, (string)deS.Value); } } } while (deS.Read()); deS.Close(); } catch (Exception e) { } if (pf.name == null) return null; return pf; } private JsonTextReader getJsonReader() { var uri = new Uri("https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol=%22" + symbol + "%22&format=json&diagnostics=true&env=store://datatables.org/alltableswithkeys"); return new JsonTextReader(new StreamReader(new WebClient().OpenRead(uri))); } } class Portfolio { public static string[] Fields = { "Name", "Ask", "Bid", "Open" }; public string name { get; private set; } public string ask { get; private set; } public string bid { get; private set; } public string open { get; private set; } public void set(string value, string p) { if (Fields[0].Equals(value)) { name = p; } if (Fields[1].Equals(value)) { ask = p; } if (Fields[2].Equals(value)) { bid = p; } if (Fields[3].Equals(value)) { open = p; } } }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1