【发布时间】:2018-10-16 21:35:35
【问题描述】:
我目前正在自学 C#,并提出了一个程序想法如下:
- 程序生成随机数
- 程序生成随机数学运算符
- 程序生成随机数
- 询问用户随机生成问题的答案
- 用户输入答案
- 程序将生成问题的结果与用户输入进行比较
- 程序打印用户是否正确。
我遇到的问题是我只能以以下格式/数据类型打印方程式:
(示例)5 + 1 (数字,字符串运算符,数字)
或将上述数据类型组合成一个字符串
从那里的问题是,我无法弄清楚如何将所有这些转换为可以存储在变量中的数学方程,然后与用户的输入进行比较。
我确信我做的比它可能的更困难,但我一直在这个程序、论坛和大量帖子中,但无法将任何东西拼凑在一起。
在我学习 C# 的过程中,我将不胜感激任何对我的代码的见解以及我出错的地方!
public static void Main(string[] args)
{
mathProblem();
int userAnswer = Convert.ToInt32(Console.ReadLine());
}
public static void mathProblem()
{
Random numberGenerator = new Random();
Random operatorSelect = new Random();
//Generates random number for 1st part of problem
int number1 = numberGenerator.Next(1, 11);
//Generates random number for 2nd part of problem
int number2 = numberGenerator.Next(1, 11);
//int to store/assign random operator
int mathOperator = 0;
//newOperator set to empty string that will change and store operator generated
string newOperator = "";
// gives value of 1-4
mathOperator = operatorSelect.Next(5);
switch (mathOperator)
{
case 1:
newOperator = "+";
break;
case 2:
newOperator = "-";
break;
case 3:
newOperator = "*";
break;
case 4:
newOperator = "/";
break;
default:
newOperator = "+";
break;
}
Convert.ToString(number1);
Convert.ToString(number2);
Console.WriteLine("What is " + number1 + " " + newOperator + " " + number2 + "?");
}
【问题讨论】:
-
你不需要存储数学方程,你只需要执行方程并存储结果。除此之外,您的 switch 语句必须实际执行数学运算,而不仅仅是分配
newOperator变量 -
你有一个在所有级别的开发者中都非常常见的障碍,从初学者到专家:字符串幸福障碍。也就是说,您认为对于某些实际上不涉及 text 的任务来说,字符串是一种有用的数据类型。你正在做math,所以编写代码,将数学对象表示为mathematical objects,而不是text。试试这个:创建一个基类
Expression和两个派生类Addition和Number。现在你知道如何表示 1 + 2 + 3 了吗?现在你可以在Expression上实现一个方法Evaluate吗? -
另外,从来没有像这样随机制作两个。使 one 随机并将其用于一切。当您在彼此之后创建两个随机数时它们都会产生完全相同的随机数序列,这根本不是您想要的。