编写一个将格里夫纳汇率转换为$,Euro的程序。
一天中的好时光。我试图编写一个程序,使用官方网站上的当前汇率。请更正我的错误,并添加我做错的评论。谢谢你。
using System;
using System.Net;
namespace Currency_Converter
{
class Program
{
static void Main()
{
Console.Write("Enter the amount of hryvnia: ");
double uah = double.Parse(Console.ReadLine());
double cource = GetCourse();
Console.WriteLine("Euro exchange rate: " + cource);
Console.WriteLine("{0} UAH. = {1} Euro.", uah,
Math.Round(uah / GetCourse(), 2));
Console.ReadKey();
}
static double GetCourse()
{
WebClient client = new WebClient();
client.Encoding = System.Text.Encoding.UTF8;
string data =
client.DownloadString("https://bank.gov.ua/ua/markets/exchangerates?
date=20.02.2021&period=daily");
string ff = data.Substring(data.IndexOf("<td>33,6478</td>"));
ff = ff.Substring(ff.IndexOf("<td>") + 4);
ff = ff.Remove(ff.IndexOf("</td>")).Replace('.', ',');
return double.Parse(ff);
}
}
}
您不应该使用网络拥挤,因为有官方的API:
using Newtonsoft.Json;
using System;
using System.Linq;
using System.Net;
namespace ConsoleApp2
{
class Program
{
static void Main()
{
Console.Write("Enter the amount of hryvnia: ");
double uah = double.Parse(Console.ReadLine());
double cource = GetCourse();
Console.WriteLine("Euro exchange rate: " + cource);
Console.WriteLine("{0} UAH. = {1} Euro.", uah,
Math.Round(uah / cource, 2));
Console.ReadKey();
}
static double GetCourse()
{
WebClient client = new WebClient();
client.Encoding = System.Text.Encoding.UTF8;
string data = client.DownloadString("https://bank.gov.ua/NBUStatService/v1/statdirectory/exchange?json");
var currencies = JsonConvert.DeserializeObject<Root[]>(data);
return currencies.Where(c => c.cc.Equals("EUR", StringComparison.InvariantCultureIgnoreCase)).First().rate;
}
}
public class Root
{
public int r030 { get; set; }
public string txt { get; set; }
public double rate { get; set; }
public string cc { get; set; }
public string exchangedate { get; set; }
}
}
UPD。推荐使用HttpClient。我更喜欢Newtonsoft.Json,但是您可以使用任何其他库,例如System.Text.Json
using Newtonsoft.Json;
using System;
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
namespace ConsoleApp2
{
class Program
{
static void Main()
{
Console.Write("Enter the amount of hryvnia: ");
double uah = double.Parse(Console.ReadLine());
double cource = GetCourse();
Console.WriteLine("Euro exchange rate: " + cource);
Console.WriteLine("{0} UAH. = {1} Euro.", uah,
Math.Round(uah / cource, 2));
Console.ReadKey();
}
static double GetCourse()
{
Task<double> task = Task.Run(async () => await GetCourseAsync());
return task.Result;
}
static async Task<double> GetCourseAsync()
{
var client = new HttpClient();
HttpResponseMessage response = await client.GetAsync("https://bank.gov.ua/NBUStatService/v1/statdirectory/exchange?json");
response.EnsureSuccessStatusCode();
string data = await response.Content.ReadAsStringAsync();
var currencies = JsonConvert.DeserializeObject<Root[]>(data);
return currencies.Where(c => c.cc.Equals("EUR", StringComparison.InvariantCultureIgnoreCase)).First().rate;
}
}
public class Root
{
public int r030 { get; set; }
public string txt { get; set; }
public double rate { get; set; }
public string cc { get; set; }
public string exchangedate { get; set; }
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句