首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简易C#计算器

问简易C#计算器
EN

Code Review用户
提问于 2018-12-15 07:38:57
回答 1查看 394关注 0票数 3

我正在为我的学校做一个简单的计算。在我看来,代码看上去还不错,但我不确定是否有什么需要改进的地方,但可能总是有需要改进的地方。有什么办法让它看起来更好看,更好地工作吗?

代码语言:javascript
复制
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;
        }
    }
}
EN

回答 1

Code Review用户

发布于 2018-12-16 11:08:35

跨代码处理可能的异常。处理异常直接处理解析值以避免异常(使用TryParse而不是Parse)。

代码语言:javascript
复制
int VolbaObrazce;
bool validInput= int.TryParse(Console.ReadLine(),out VolbaObrazce);
//here you shall have value in VolbaObrazce if you only provide valid int.

您还拥有多个只处理算术操作的方法,这些操作将很难维护。

票数 1
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/209714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档