【问题标题】:If an user does not input a local variable how do i define it using other variables? C#如果用户没有输入局部变量,我如何使用其他变量来定义它? C#
【发布时间】:2019-11-30 16:10:56
【问题描述】:

让我解释一下。 我是一名高中生,没有很多 C# 编程经验,我们有一个任务来制作一个几何计算器,我得到了一个三角金字塔,但这不是重点。计算器应该从用户那里得到一个输入,然后用给定的数据计算表面和体积。

               double a = Convert.ToDouble(Console.ReadLine());
               double h = Convert.ToDouble(Console.ReadLine());
               double H = Convert.ToDouble(Console.ReadLine());
               double area = Math.Pow(a, 2) * Math.Sqrt(3) / 4 + 3 * a * h / 2;
                double volume = Math.Pow(a, 2) * Math.Sqrt(3) * H / 12;
                Console.WriteLine(volume);
               Console.WriteLine(area);
               Console.ReadLine();

现在这对我来说很容易,但是当用户不知道其中一个变量的值时会出现问题,例如高度。在这种情况下,计算器应该使用其他两个局部变量来计算它。

double h = Convert.ToDouble(Console.ReadLine());
double h = Math.Sqrt(Math.Pow(a * Math.Sqrt(3) / 3, 2) + Math.Pow(H));

我知道我知道你不能这样做,但我在互联网上找不到任何东西,所以我请求你帮助,因为这是我成绩的 20%。 如果无法做到这一点,您还有其他建议吗?

附:对不起,如果我的英语不好。

【问题讨论】:

  • 欢迎来到 Stack Overflow。请通过tour 了解 Stack Overflow 的工作原理,并阅读How to Ask 了解如何提高问题的质量。请参阅:How do I ask and answer homework questions?。也可以查看help center,看看你可以问什么问题。
  • 不要编写控制台应用程序,而是编写一个简单的 Windows 窗体应用程序。将文本框控件放在表单上以供可能的用户输入,以及一个标记为“计算”的按钮和另一个标记为“清除”的按钮。让用户输入一些数据并按下计算按钮。发生这种情况时,请查看已输入的数据(以及缺少的数据)并计算缺少的数据
  • 让用户输入一个 sentinel 值以表明他们不知道某些事情。使用对问题没有意义的值。在这种情况下,0(零)或负一(-1)会很好地工作。然后只需使用一些if 语句来查看哪个变量具有标记值并进行相应的计算...

标签: c#


【解决方案1】:

这很容易实现。没有变量意味着您将根据缺少的变量有不同的公式/计算,您可以使用if 条件来做到这一点。

   //Read them in as strings if you want to check if they're "_blank_", convert them 
     later.
        string a = Console.ReadLine();
        string h = Console.ReadLine();
        string H = Console.ReadLine();

        double area = 0;
        double volume = 0;
    
        if(a == "") //If it's blank, no entry do this code. 
        {
                  //This is how I'd convert it, just a little less pretty for the sake
                  //of understanding for you. You'd need to do this in every if block.
                  double returnedDoubleh = ConvertToDouble(h);
                  double returnedDoubleH = ConvertToDouble(H);
                  //Have your formula if `a` is blank.
        }
        else if (h == "")
        {
                  double returnedDoubleA = ConvertToDouble(a);
                  double returnedDoubleH = ConvertToDouble(H);
                  //Have your formula if `h` is blank.
        }
        else if (H == "")
        {
                  double returnedDoubleA = ConvertToDouble(a);
                  double returnedDoubleh = ConvertToDouble(h);
                  //Have your formula if `H` is blank.
        }
        else //This is if none are blank OR More than one is blank which would crash if 
                more than one is blank.. 
        {
                        area = Math.Pow(a, 2) * Math.Sqrt(3) / 4 + 3 * a * h / 2;
                        volume = Math.Pow(a, 2) * Math.Sqrt(3) * H / 12;        
        }

                       Console.WriteLine(volume);
                       Console.WriteLine(area);
                       Console.ReadLine();

转换字符串值的示例函数。

public static double ConvertToDouble(string nonConverted)
        {
            double converted;
            while (!double.TryParse(nonConverted, out converted) || String.IsNullOrWhiteSpace(nonConverted))
            {
                Console.Clear();
                Console.WriteLine($"INVALID RESPONSE\n\r" +
                    $"\n\rTry Again");
                nonConverted = Console.ReadLine();
            }

            return converted;
        }

在您的条件句中,您还可以使用“变量”,因此您可以使用 if(a == "x") 之类的东西来代替 if(a == "")

【讨论】:

  • 当我尝试将一个局部变量添加到公式中时,它不会将它们转换为双精度,而是将它们保留为不知道为什么的字符串。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-16
相关资源
最近更新 更多