我需要输入3个数字,然后输出最高&使用IF命令的3个数字中最低的。我有一切正常,除了我得到1个最大数字(正确)和3个最低数字的输出(不正确)。现在我完全理解为什么他们全部被显示,我只是不知道如何解决它。一旦整数由用户输入定义,我的代码如下:
if (num1 > num2 && num1 > num3)
{
Console.WriteLine("Largest Number: " + num1);
}
if (num2 > num3)
{
Console.WriteLine("Smallest Number: " + num3);
}
else
{
Console.WriteLine("Smallest Number: " + num2);
}
然后重复3次,切换各自的整数。我理解问题是什么,第二个if命令对于所有3个场景都是正确的。我只是......不知道如何解决它。我觉得我只需要以某种方式加入这两个if语句,但我不确定如何做到这一点,或者它是否可能。
答案 0 :(得分:3)
在许多情况下,您可以,而且必须嵌套块。 这样,只有在第一个被评估为真时才会评估第二个if。
if (num1 > num2 && num1 > num3)
{
Console.WriteLine("Largest Number: " + num1);
if (num2 > num3)
{
Console.WriteLine("Smallest Number: " + num3);
}
else
{
Console.WriteLine("Smallest Number: " + num2);
}
}
这只是为了回答您最直接的问题,即显示的次数最多不止一次。
您可能会遇到其他人,例如,正如其他人所提到的:如果两个数字相等会怎么样?
答案 1 :(得分:2)
要获得最大/最低的最佳方法是使用变量来存储当前的最大值/最小值,而不是检查每个案例(置换)。
像
这样的东西 int largest = int.MinValue;
int smallest = int.MaxValue;
if (num1 > largest)
largest = num1;
if (num2 > largest)
largest = num2;
if (num3 > largest)
largest = num3;
if (num1 < smallest)
smallest = num1;
if (num2 < smallest)
smallest = num2;
if (num3 < smallest)
smallest = num3;
//output largest/smallest
答案 2 :(得分:-1)
不需要if
个陈述:
Console.WriteLine("Largest Number: " + Math.Max(Math.Max(num1, num2), num3));
Console.WriteLine("Smallest Number: " + Math.Min(Math.Min(num1, num2), num3));