C# 排列数字c。if elseif else/nested if only(num1应始终为最高值)
有人能帮我修一下吗?我知道的每件事都试过了。我编写了这段代码,但在运行时似乎什么都没有出现。谢谢C# 排列数字c。if elseif else/nested if only(num1应始终为最高值),c#,C#,有人能帮我修一下吗?我知道的每件事都试过了。我编写了这段代码,但在运行时似乎什么都没有出现。谢谢 class Program { static void Main() { int num1, num2, num3, num4, num5; int Ahighest, b, c, d, Elowest; Console.Write("Enter number : "); num1 = int.Parse(Consol
class Program
{
static void Main()
{
int num1, num2, num3, num4, num5;
int Ahighest, b, c, d, Elowest;
Console.Write("Enter number : ");
num1 = int.Parse(Console.ReadLine());
Console.Write("Enter number : ");
num2 = int.Parse(Console.ReadLine());
Console.Write("Enter number : ");
num3 = int.Parse(Console.ReadLine());
Console.Write("Enter number : ");
num4 = int.Parse(Console.ReadLine());
Console.Write("Enter number : ");
num5 = int.Parse(Console.ReadLine());
//highest
if (num1 > num2)
{
if (num1 > num3)
{
if (num1 > num4)
{
if (num1 > num5)
{
Ahighest = num1;
//b
if (num2 > num3)
{
if (num2 > num4)
{
if (num2 > num5)
{
b = num2;
}
if (num3 > num2)
{
if (num3 > num4)
{
if (num3 > num5)
{
b = num3;
if (num4 > num2)
{
if (num4 > num3)
{
if (num4 > num5)
{
b = num4;
if (num5 > num2)
{
if (num5 > num3)
{
if (num5 > num4)
{
b = num5;
//c
if (b > num2)
{
c = num2;
if (b > num3)
{
c = num3;
if (b > num4)
{
c = num4;
if (b > num5)
{
c = num5;
//d
if (c > num2)
{
d = num2;
if (c > num3)
{
d = num3;
if (c > num4)
{
d = num4;
if (c > num5)
{
d = num5;
//lowest
if (d > num2)
{
Elowest = num2;
if (d > num3)
{
Elowest = num3;
if (d > num4)
{
Elowest = num4;
if (d > num5)
{
Elowest = num5;
Console.WriteLine(Ahighest + "," + b + "," + c + "," + d + "," + Elowest);
Console.ReadLine();
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
您可以让框架排序,而不是每次都与其他框架进行比较:
int[] orderedNumbers = { num1, num2, num3, num4, num5 };
Array.Sort( orderedNumbers );
现在,您可以在以下位置找到最低价格:
orderedNumbers.First();
最高的是:
orderedNumbers.Last();
或者,如果数组中没有那么多项,则通过索引异常访问每个数字:
int lowest = orderedNumbers[0];
int b = orderedNumbers[1];
int c = orderedNumbers[2];
int d = orderedNumbers[3];
int highest = orderedNumbers[4];
在这段代码中,如果转换失败-int被设置为null而不是MinValue,这是因为int?是可为空的类型。这样做可以让我们有一个回退值,而不必冒有人实际使用它作为输入的风险到底是什么…神圣的翻转IF语句。。你把所有的垃圾都放进去了,基本上在一个条件下你想让它做点什么…你想知道为什么它不输出什么…这个代码太嵌套了,里面住着鸟。我尝试了我所知道的一切然后是学习新东西的时候了。这叫做调试。当您在调试模式下从IDE执行应用程序时,您可以在代码执行时逐行遍历代码,并观察运行时值和行为。试试看。使用此选项可明确确定观察到的行为与预期行为的不同之处。看看发生这种情况时的变量值。尽管如此,我还是不确定为什么这个问题会让选票下降……我看不到任何合法的理由这样做。OP缺乏知识并不是否决投票的理由。
int[] nums = new int[5];
for(int i = 0; i < nums.Length; i++)
{
Console.Write($"Enter number {i}: ");
int tempInt;
bool number = int.TryParse(Console.ReadLine(), out tempInt);
nums[i] = number ? tempInt : int.MinValue;
}
Array.Sort(nums);
Console.WriteLine(string.Join(",", nums.Select(x => x == int.MinValue ? "NaN" : x.ToString()).ToArray()));
int?[] nums = new int?[5];
for(int i = 0; i < nums.Length; i++)
{
Console.Write($"Enter number {i}: ");
int tempInt;
bool number = int.TryParse(Console.ReadLine(), out tempInt);
nums[i] = number ? tempInt : null;
}
Array.Sort(nums);
Console.WriteLine(string.Join(",", nums.Select(x => x == null ? "NaN" : x.ToString()).ToArray()));