C# 使用非常基本的if语句比较数字

C# 使用非常基本的if语句比较数字,c#,if-statement,C#,If Statement,我想让用户输入3个独立的整数,如果它们彼此不相等,程序会返回哪些数字彼此相等。对于我这里的代码,我可以说它们彼此相等,前两个相等,但第一个和第三个不相等。我假设这是因为我的else语句没有正确地放在大括号中 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using static System.Consol

我想让用户输入3个独立的整数,如果它们彼此不相等,程序会返回哪些数字彼此相等。对于我这里的代码,我可以说它们彼此相等,前两个相等,但第一个和第三个不相等。我假设这是因为我的else语句没有正确地放在大括号中

    using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;

namespace Compare3Numbers
{
    class Program
    {
        static void Main(string[] args)
        {


            int number1;
            int number2;
            int number3;

            Write("Enter the first number: ");
            number1 = int.Parse(ReadLine());

            Write("Enter the second number: ");
            number2 = int.Parse(ReadLine());

            Write("Enter the third number: ");
            number3 = int.Parse(ReadLine());

            if (number1 == number2 && number2 == number3)
            {
                if (number2 == number3)
                {
                    WriteLine("All your numbers are equal!");
                }
                else if (number1 == number2)
                {
                    WriteLine("Your first two numbers are equal!");
                }

                else if (number1 == number3)
                {
                    WriteLine("Your first number and third number are equal!");
                }
                else if (number2 == number3)
                {
                    WriteLine("Your second number is equal to your third number!");
                }
            }





            //debug line
            WriteLine("Press any key to continue...");
            ReadLine();
        }
    }
}

额外阅读


额外阅读

这样看吧

if (number1 == number2)
{
//rest of your if statements
}
由于1和2不相等,因此将执行if语句中的任何内容。你需要在那之外检查number1==number3。

这样看

if (number1 == number2)
{
//rest of your if statements
}

由于1和2不相等,因此将执行if语句中的任何内容。您需要在这之外检查number1==number3。

只有当前两个数字相等时,才会写入代码中的消息。并且没有针对第一个和第三个以及第二个和第三个号码运行的检查

尝试一步一步地调试代码以查看路径

我建议您使用代码分析器。“双重比较相同条件”问题您的代码将通过声纳Lint显示

在第二行

if (number1 == number2)
您将获得:

警告S2583更改此条件,使其不总是计算为“真”;某些后续代码永远不会执行

正确的代码可以如下所示:

if (number1 == number2)
{
     if (number2 == number3)
    {
        WriteLine("All your numbers are equal!");
    }
    else
    {
        WriteLine("Your first two numbers are equal!");
    }
}
else
{
    if (number1 == number3)
    {
        WriteLine("Your first number and third number are equal!");
    }
    // there is no need for else, because this would mean, that (number1 == number2) and this is the part, where these number differs
    if (number2 == number3)
    {
        WriteLine("Your second number and third number are equal!");
    }
}
var dictionary = new Dictionary<string, bool>
{
   { "Your first two numbers are equal!", Math.Abs(number1 - number2) == 0 },
   { "Your second number is equal to your third number!", Math.Abs(number2 - number3) == 0 },
   { "Your first number and third number are equal!", Math.Abs(number3 - number1) == 0 }
};

var output = dictionary.Where(i => i.Value).ToList();
var message = output.Count == 3 ? "All your numbers are equal!" : output.FirstOrDefault(i => i.Value).Key;            
            Console.WriteLine(message);

只有当前两个数字相等时,才会写入代码中的消息。并且没有针对第一个和第三个以及第二个和第三个号码运行的检查

尝试一步一步地调试代码以查看路径

我建议您使用代码分析器。“双重比较相同条件”问题您的代码将通过声纳Lint显示

在第二行

if (number1 == number2)
您将获得:

警告S2583更改此条件,使其不总是计算为“真”;某些后续代码永远不会执行

正确的代码可以如下所示:

if (number1 == number2)
{
     if (number2 == number3)
    {
        WriteLine("All your numbers are equal!");
    }
    else
    {
        WriteLine("Your first two numbers are equal!");
    }
}
else
{
    if (number1 == number3)
    {
        WriteLine("Your first number and third number are equal!");
    }
    // there is no need for else, because this would mean, that (number1 == number2) and this is the part, where these number differs
    if (number2 == number3)
    {
        WriteLine("Your second number and third number are equal!");
    }
}
var dictionary = new Dictionary<string, bool>
{
   { "Your first two numbers are equal!", Math.Abs(number1 - number2) == 0 },
   { "Your second number is equal to your third number!", Math.Abs(number2 - number3) == 0 },
   { "Your first number and third number are equal!", Math.Abs(number3 - number1) == 0 }
};

var output = dictionary.Where(i => i.Value).ToList();
var message = output.Count == 3 ? "All your numbers are equal!" : output.FirstOrDefault(i => i.Value).Key;            
            Console.WriteLine(message);

“n”数字的通用方法(继续插入数字,直到遇到“q”)

输出

Your 1st, 7th, 10th and 13th are equal
Your 2nd, 8th and 11th are equal
Your 3rd, 9th and 12th are equal

“n”数字的通用方法(继续插入数字,直到遇到“q”)

输出

Your 1st, 7th, 10th and 13th are equal
Your 2nd, 8th and 11th are equal
Your 3rd, 9th and 12th are equal

我会这样做:

if (number1 == number2)
{
     if (number2 == number3)
    {
        WriteLine("All your numbers are equal!");
    }
    else
    {
        WriteLine("Your first two numbers are equal!");
    }
}
else
{
    if (number1 == number3)
    {
        WriteLine("Your first number and third number are equal!");
    }
    // there is no need for else, because this would mean, that (number1 == number2) and this is the part, where these number differs
    if (number2 == number3)
    {
        WriteLine("Your second number and third number are equal!");
    }
}
var dictionary = new Dictionary<string, bool>
{
   { "Your first two numbers are equal!", Math.Abs(number1 - number2) == 0 },
   { "Your second number is equal to your third number!", Math.Abs(number2 - number3) == 0 },
   { "Your first number and third number are equal!", Math.Abs(number3 - number1) == 0 }
};

var output = dictionary.Where(i => i.Value).ToList();
var message = output.Count == 3 ? "All your numbers are equal!" : output.FirstOrDefault(i => i.Value).Key;            
            Console.WriteLine(message);
var字典=新字典
{
{“你的前两个数字相等!”,Math.Abs(number1-number2)==0},
{“你的第二个数字等于你的第三个数字!”,Math.Abs(number2-number3)==0},
{“你的第一个数字和第三个数字相等!”,Math.Abs(number3-number1)==0}
};
var output=dictionary.Where(i=>i.Value.ToList();
var消息=输出。计数=3?“所有数字都相等!”:output.FirstOrDefault(i=>i.Value).Key;
控制台写入线(消息);

我会这样做:

if (number1 == number2)
{
     if (number2 == number3)
    {
        WriteLine("All your numbers are equal!");
    }
    else
    {
        WriteLine("Your first two numbers are equal!");
    }
}
else
{
    if (number1 == number3)
    {
        WriteLine("Your first number and third number are equal!");
    }
    // there is no need for else, because this would mean, that (number1 == number2) and this is the part, where these number differs
    if (number2 == number3)
    {
        WriteLine("Your second number and third number are equal!");
    }
}
var dictionary = new Dictionary<string, bool>
{
   { "Your first two numbers are equal!", Math.Abs(number1 - number2) == 0 },
   { "Your second number is equal to your third number!", Math.Abs(number2 - number3) == 0 },
   { "Your first number and third number are equal!", Math.Abs(number3 - number1) == 0 }
};

var output = dictionary.Where(i => i.Value).ToList();
var message = output.Count == 3 ? "All your numbers are equal!" : output.FirstOrDefault(i => i.Value).Key;            
            Console.WriteLine(message);
var字典=新字典
{
{“你的前两个数字相等!”,Math.Abs(number1-number2)==0},
{“你的第二个数字等于你的第三个数字!”,Math.Abs(number2-number3)==0},
{“你的第一个数字和第三个数字相等!”,Math.Abs(number3-number1)==0}
};
var output=dictionary.Where(i=>i.Value.ToList();
var消息=输出。计数=3?“所有数字都相等!”:output.FirstOrDefault(i=>i.Value).Key;
控制台写入线(消息);

const int ONE=1和什么有什么关系?啊,我忘了把代码拿出来,以为我要用它,但现在可能不用了。
const int ONE=1
和什么有什么关系?啊,代码我忘了拿出来,以为我要用它,但现在可能不用了。所以当我运行这个时,它仍然不会显示第一个和第二个或第二个和第三个相等的消息。@boothegreat在编辑之后,代码的状态甚至比编辑之前更糟。现在,只有当所有数字相等时,它才会显示一条消息。因此,当我运行此程序时,它仍然不会显示第一个和第二个或第二个和第三个相等的消息。@boothegreat编辑后,代码的状态甚至比编辑前更糟。现在,只有当所有数字相等时,它才会显示一条消息。@boothegreat everything,请看我的示例抱歉,我没有真正理解。我不使用大括号吗?这是第二个if语句吗?@boothegreat这就是你嵌套Ifs的方式。@boothegreat所有的事情,看看我的例子抱歉我没有真正理解。我不使用大括号吗?这是第二个if语句吗?@boothegreat这就是你嵌套Ifs的方式。有趣的方法。同时感谢
AddOrdinal
。我不知道,计算后缀的规则是这样的。(我只从电脑和互联网上学习英语,所以我不知道这个规则。)有趣的方法。同时感谢
AddOrdinal
。我不知道,计算后缀的规则是这样的。(我只从电脑和互联网上学习英语,所以我不知道这条规则。)