请看看下面的代码如果else语句和while循环
namespace Funny
{
class QuesionsAndAnswers
{
private double firstNumber;
private double secondNumber;
private double userAnswer;
private double computerAnswer;
private string operators;
private bool answerCorrect;
private bool enableDouble;
private double[] listOfNumbers;
private string[] listOfOperators;
private Random randomizer;
private static QuesionsAndAnswers qa;
private QuesionsAndAnswers()
{
randomizer = new Random();
listOfNumbers = new double[] { 1,2,3,4,5,6,7,8,9 };
listOfOperators = new string[] { "+", "-", "*", "/" };
}
public static QuesionsAndAnswers getQuesionsandAnswersInstance()
{
if (qa == null)
qa = new QuesionsAndAnswers();
return qa;
}
public string generateQuestions()
{
string result = "";
operators = listOfOperators[randomizer.Next(listOfOperators.Length)];
firstNumber = listOfNumbers[randomizer.Next(listOfNumbers.Length)];
secondNumber = listOfNumbers[randomizer.Next(listOfNumbers.Length)];
if ((operators.Equals("/")) && (enableDouble == false))
{
while (firstNumber % secondNumber == 0)
{
firstNumber = listOfNumbers[randomizer.Next(listOfNumbers.Length)];
}
result = firstNumber + operators + secondNumber;
}
else if (operators.Equals("-") && (firstNumber<secondNumber))
{
while (firstNumber > secondNumber)
{
firstNumber = listOfNumbers[randomizer.Next(listOfNumbers.Length)];
secondNumber = listOfNumbers[randomizer.Next(listOfNumbers.Length)];
}
result = firstNumber + operators + secondNumber;
}
return result;
}
public void setDoubleAnswers(bool check)
{
enableDouble = check;
}
}
}
在这里,在generateQuestions()方法,我想产生一些数学问题。
如果运算符在“ - ”中并且如果第一个数字为< secondNumber,那么应重新生成数字(第一个数字和第二个数字)以确保答案不是负值。
而且,如果运算符是“/”且布尔值为false,则应该再次重新生成数字以确保答案(表示计算,例如2/1 = 2)不包含任何浮点(这意味着它不应该产生像2/3这样的问题,因为答案包含浮点)。
在我的尝试中,上述两个都没有发生。它仍然会产生意想不到的答案,有时甚至没有。这是为什么?请帮助
请注意,我是Java开发人员,这是我第一个主要的C#项目。
它的C#,您可以用==比较字符串:如果(运营商==“/”) – zmbq
使用调试运行(比如说)工具的Visual Studio A和弄清楚在几分钟 – Tigran
不是应该同时'firstnumber%lastnumber!= 0'你想循环,直到找到一个没有余数的数字.... –