我正在为我的学校做一个简单的计算。在我看来,代码看上去还不错,但我不确定是否有什么需要改进的地方,但可能总是有需要改进的地方。有什么办法让它看起来更好看,更好地工作吗?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace kalkulacka
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Daniel Nosek");
Console.WriteLine("Výpočet obvodu a obsahu - trojúhelník, pravidelný šestiúhelník");
Console.WriteLine("Zvolte si obrazec:");
Console.WriteLine("1 - trojúhelník");
Console.WriteLine("2 - pravidelný šestiúhelník");
int VolbaObrazce = int.Parse(Console.ReadLine());
double obvod = 0;
double obsah = 0;
bool prepocitat = false;
do
{
Console.Clear();
switch (VolbaObrazce)
{
case 1:
double a = PrectiPromennou("Zadejte délku strany a:");
double b = PrectiPromennou("Zadejte délku strany b:");
double c = PrectiPromennou("Zadejte délku strany c:");
obvod = ObvodTrojuhelniku(a, b, c);
obsah = ObsahTrojuhelniku(a, b, c);
break;
case 2:
double d = PrectiPromennou("Zadejte délku strany d:");
obvod = ObvodSestiuhelniku(d);
obsah = ObsahSestiuhelniku(d);
break;
default:
{
Console.WriteLine("Neplatná volba");
}
return;
}
// vysledky, zaokrouhleny na dve desetinna mista
Console.WriteLine("obvod: " + Math.Round(obvod, 2));
Console.WriteLine("obsah: " + Math.Round(obsah, 2));
/* loop pro pripad kdy uzivatel chce vypocet znova s jinymi hodnotami
promenna recalculate musi byt rovna 1, jinak se program vypne */
prepocitat = PrectiPromennou("Pro výpočet s jinými rozměry stiskněte 1:") == 1;
}
while (prepocitat);
}
/*Puvodne jsem pouzival pri cases
Console.WriteLine("Zadejte délku strany x:");
double x = double.Parse(Console.ReadLine());
nicmene resit to takhle mi prijde jednodussi.*/
static double PrectiPromennou(string text)
{
Console.Write(text);
return double.Parse(Console.ReadLine());
}
/// <summary>
/// Vypocet obvodu pomoci souctu stran
/// </summary>
/// <param name="a">delka strany a</param>
/// <param name="b">delka strany b</param>
/// <param name="c">delka strany c</param>
/// <returns>obvod trojuhelniku</returns>
static double ObvodTrojuhelniku(double a, double b, double c)
{
return a + b + c;
}
/// <summary>
/// Vypocet obsahu pomoci heronova vzorce
/// </summary>
/// <param name="a">delka strany a</param>
/// <param name="b">delka strany b</param>
/// <param name="c">delka strany c</param>
/// <returns>obsah trojuhelniku</returns>
static double ObsahTrojuhelniku(double a, double b, double c)
{
double s = (a + b + c) / 2;
return Math.Sqrt(s * (s - a) * (s - b) * (s - c));
}
/// <summary>
/// Vypocet obvodu pomoci soucinu stran
/// </summary>
/// <param name="d">delka strany d</param>
/// <returns>obvod sestiuhelniku</returns>
static double ObvodSestiuhelniku(double d)
{
return 6 * d;
}
/// <summary>
/// vypocet obsahu
/// </summary>
/// <param name="d">delka strany d</param>
/// <returns>obsah sestiuhelniku</returns>
static double ObsahSestiuhelniku(double d)
{
return ((3 * Math.Sqrt(3) * Math.Pow(d, 2))) / 2;
}
}
}发布于 2018-12-16 11:08:35
跨代码处理可能的异常。处理异常直接处理解析值以避免异常(使用TryParse而不是Parse)。
int VolbaObrazce;
bool validInput= int.TryParse(Console.ReadLine(),out VolbaObrazce);
//here you shall have value in VolbaObrazce if you only provide valid int.您还拥有多个只处理算术操作的方法,这些操作将很难维护。
https://codereview.stackexchange.com/questions/209714
复制相似问题