Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基本c#if语句查询_C#_If Statement - Fatal编程技术网

基本c#if语句查询

基本c#if语句查询,c#,if-statement,C#,If Statement,我需要输入3个数字,然后使用IF命令输出3个数字中的最高值和最低值。我有一切工作,除了我得到1个最大的数字(正确)和3个输出的最低数字(不正确)。现在我完全明白为什么它们都被显示了,我只是不知道如何修复它。一旦用户输入定义了整数,我的代码如下: if (num1 > num2 && num1 > num3) { Console.WriteLine("Largest Number: " + num1); } if (num2 > num3) {

我需要输入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语句连接在一起,但我不确定该如何做,或者这是否可行。

如果有必要使用
语句:

Console.WriteLine("Largest Number: " + Math.Max(Math.Max(num1, num2), num3));
Console.WriteLine("Smallest Number: " + Math.Min(Math.Min(num1, num2), num3));

在许多实例上,您可以(而且必须)嵌套块。 这样,仅当第一个if的计算结果为true时,才会计算第二个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);
    }
}
这只是为了回答您最直接的问题,也就是说,最小的数字被多次显示


例如,您可能会遇到其他人,正如其他人所提到的:如果两个数字相等怎么办?

要获得最大/最小值,最好的方法是使用一个变量来存储当前的最大/最小值,而不是检查每种情况(排列)

差不多

    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
int-max=int.MinValue;
int最小值=int.MaxValue;
如果(num1>最大值)
最大=num1;
如果(num2>最大值)
最大值=num2;
如果(num3>最大值)
最大=num3;
如果(num1<最小值)
最小=num1;
如果(num2<最小值)
最小值=num2;
如果(num3<最小值)
最小值=num3;
//输出最大/最小

学习使用调试器,在if语句上设置断点,查看控件如何进入其他条件,以及是否还有其他需要。是否尝试将第二个
if
(测试最小数的一个)块移到第一个(测试最大数的一个)块中?不确定是否有否决票,这可能是其他人的一个基本问题,但是获得否决票并不是一个坏问题。如果语句可以嵌套,请仔细研究。请注意,如果任何数字相等,您将要使用>=而不是>。很明显,OP正在尝试学习如何使用If语句问题字面上说他们想使用If语句。如果呢
num1
是最小的吗?你不会得到任何输出。谢谢,伙计,这正是我错过的。对于这种向下投票,请记住代码被复制两次,以满足num1、num2或num3最大的需求。我已经测试了所有3种情况,并且都有效。这是真的。我不知道为什么人们总是投反对票answers@Habib阅读问题,这个块在THOP的代码中重复了三次,所有的排列,它不是完整的解决方案,只是一个嵌套example@Sidewinder94,你说得对,我错过了“然后重复3次,切换相应的整数。”。删除我的下一票,+1这是迄今为止唯一一个在两个值相等时不会产生多个输出的答案