C# 为什么for循环仍然在查找第二个最低数字的方法中添加0
编辑: 我使用LINQ来摆脱0,但我刚刚发现我不允许使用它(是的)。现在我不明白为什么,当我输入0时,程序仍然将其添加到数字数组中。有什么建议吗C# 为什么for循环仍然在查找第二个最低数字的方法中添加0,c#,C#,编辑: 我使用LINQ来摆脱0,但我刚刚发现我不允许使用它(是的)。现在我不明白为什么,当我输入0时,程序仍然将其添加到数字数组中。有什么建议吗 static void Main(string[] args) { int first, second; first = second = int.MaxValue; int[] numbers = new int[10]; Console.WriteLine("Enter 2-1
static void Main(string[] args)
{
int first, second;
first = second = int.MaxValue;
int[] numbers = new int[10];
Console.WriteLine("Enter 2-10 numbers, end early with 0: ");
for (int i = 0; i < numbers.Length; i++)
{
int.TryParse(Console.ReadLine(), out int input);
if (input == 0) break;
numbers[i] = input;
}
if (numbers.Length < 2)
{
Console.Write("Please enter atleast 2 numbers");
goto finish;
}
Small(first, second, numbers);
finish:
Console.ReadLine();
}
private static void Small(int first, int second, int[] numbers)
{
for (int i = 0; i < numbers.Length; i++)
{
if (numbers[i] < first)
{
second = first;
first = numbers[i];
}
else if (numbers[i] < second && numbers[i] != first)
{
second = numbers[i];
}
}
if (second == int.MaxValue)
{
Console.Write("Please Enter At least 2 Diffrent Numbers");
}
else
{
Console.Write("Second Lowest Number is {0}", second);
}
}
static void Main(字符串[]args)
{
int第一,第二;
第一个=第二个=int.MaxValue;
整数[]个数=新整数[10];
Console.WriteLine(“输入2-10个数字,以0开头结束:”);
for(int i=0;i
现在输出正常。首先,您的设备已连接好。 您可以使用
foreach(int i in numbers)
所以你在所有10个位置都得到i的值。此数字始终未设置(可能为0),因此您总是写入数字[0]
使用
for(int i=0;i
这将解决这个问题
第二:如果用户没有输入足够的信息,您就不会返回您的输入。还有支票
if(numbers.Length < 2)
if(number.Length<2)
始终为真(固定大小为10)
我建议如下:
List<int> numbers = new List<int>();
Console.WriteLine("Enter 2-10 numbers, end early with 0:");
while(numbers.Count < 10){
int.TryParse(Console.ReadLine(), out int input);
if (input == 0) break;
numbers.Add(input);
}
if(numbers.Count < 2){
Console.WriteLine("Input at least 2 numbers!");
} else {
Small(first, second, numbers);
}
列表编号=新列表();
Console.WriteLine(“输入2-10个数字,以0开头结束:”);
while(number.Count<10){
int.TryParse(Console.ReadLine(),out int input);
如果(输入==0)中断;
数字。添加(输入);
}
如果(数字计数<2){
Console.WriteLine(“输入至少2个数字!”);
}否则{
小(第一,第二,数字);
}
您的Small()方法很好,并且工作正常
但是你把Main()输入法搞砸了
让您的代码易于测试:
static void Main(string[] args)
{
int first, second;
first = second = int.MaxValue;
int[] numbers = new int[10] {3,4,5,51,3,7,10,4,5,6};
Small(first, second, numbers);
}
这应该可以更好地完成同样的工作:
int[] numbers = new int[10] { 3, 4, 4, 51, 3, 7, 10, 4, 5, 6 };
Console.WriteLine($"2nd smallest is {numbers.Where(n => n > numbers.Min()).First()} and {numbers.Min()} is smaller ");
你想要(inti=0;i)的
,你说程序“搞砸了?”你这样说是什么意思?你能分享输出吗?试着调试程序,在第一个foreach
循环中放置一个断点,然后逐级检查代码,看看发生了什么。整个程序搞砸了
是一个很糟糕的问题描述。此外,你不需要为每个帖子创建一个新的帐户。与另一篇帖子一样,这篇帖子会从同样的家庭作业中获益:
int[] numbers = new int[10] { 3, 4, 4, 51, 3, 7, 10, 4, 5, 6 };
Console.WriteLine($"2nd smallest is {numbers.Where(n => n > numbers.Min()).First()} and {numbers.Min()} is smaller ");