c#分拣控制台输入阵列分拣系统损坏
我一直在开发一个控制台应用程序,它从用户那里获取输入并将其转换为数组,然后对数组进行排序并显示给用户。问题是,它似乎只抓取了一半的数字并对它们进行了排序。而且它有时也无法获取“结束”输入,这会导致应用程序失败。为什么会发生这种情况c#分拣控制台输入阵列分拣系统损坏,c#,arrays,sorting,int,C#,Arrays,Sorting,Int,我一直在开发一个控制台应用程序,它从用户那里获取输入并将其转换为数组,然后对数组进行排序并显示给用户。问题是,它似乎只抓取了一半的数字并对它们进行了排序。而且它有时也无法获取“结束”输入,这会导致应用程序失败。为什么会发生这种情况 static void Main(string[] args) { List<Int64> userInts = new List<Int64>(); for (int i = 0; i <
static void Main(string[] args)
{
List<Int64> userInts = new List<Int64>();
for (int i = 0; i < 99; i++)
{
string userValue = Console.ReadLine();
int userInt;
if (int.TryParse(userValue, out userInt))
{
userInts.Add(userInt);
if (Console.ReadLine().Contains("End"))
{
break;
}
}
}
Int64[] Numbers = userInts.ToArray();
var intList = new List<Int64>();
intList.AddRange(Numbers);
Console.WriteLine("De originele opsteling van nummers:");
foreach (Int64 numb in intList)
Console.Write(" {0}", numb);
Console.WriteLine(Environment.NewLine);
intList.Sort();
Console.WriteLine("Lijst in gesorteerde ordening: ");
foreach (Int64 numb in intList)
Console.Write(" {0}", numb);
Console.WriteLine();
Console.ReadKey();
}
}
static void Main(字符串[]args)
{
List userInts=new List();
对于(int i=0;i<99;i++)
{
字符串userValue=Console.ReadLine();
int userInt;
if(int.TryParse(userValue,out userInt))
{
添加(userInt);
if(Console.ReadLine()包含(“End”))
{
打破
}
}
}
Int64[]Numbers=userInts.ToArray();
var intList=新列表();
intList.AddRange(数字);
控制台。WriteLine(“原版opsteling van nummers:”);
foreach(intList中的Int64 numb)
Write(“{0}”,numb);
Console.WriteLine(Environment.NewLine);
intList.Sort();
Console.WriteLine(“Gesorterde Ording中的Lijst:”);
foreach(intList中的Int64 numb)
Write(“{0}”,numb);
Console.WriteLine();
Console.ReadKey();
}
}
}它将每隔一行忽略查找
End
,将该行移到嵌套的if
块之外,以便处理输入的值
List<Int64> userInts = new List<Int64>();
for (int i = 0; i < 99; i++)
{
string userValue = Console.ReadLine();
if (userValue.Contains("End"))
{
break;
}
int userInt;
if (int.TryParse(userValue, out userInt))
{
userInts.Add(userInt);
}
}
- 您不需要多个数组或列表,只需使用已有的
变量即可userInts
- 用于创建值字符串而不是循环
- 无需将
传递到Environment.NewLine
Console.WriteLine()
for (int i = 0; i < 99; i++)
{
string userValue = Console.ReadLine();
if (userValue.Contains("End"))
{
break;
}
int userInt;
if (int.TryParse(userValue, out userInt))
{
userInts.Add(userInt);
}
}
for(int i=0;i<99;i++)
{
字符串userValue=Console.ReadLine();
if(userValue.Contains(“End”))
{
打破
}
int userInt;
if(int.TryParse(userValue,out userInt))
{
添加(userInt);
}
}
这将读一行。若它是“结束”,那个么它将停止程序,但若它是整数,那个么它将被丢弃
出于同样的原因,正如在
TryParse
的if
条件中一样,它只会在之前解析过整数的情况下结束程序。为什么要使用这么多列表?您可以使用一个:)
试试这个:
List<long> userInts = new List<long>();
for (int i = 0; i < 99; i++)
{
string userValue = Console.ReadLine();
if (userValue.Contains("End"))
break;
int userInt;
if (int.TryParse(userValue, out userInt))
userInts.Add(userInt);
}
// Print the unchanged numbers
Console.WriteLine("De originele opsteling van nummers:");
foreach (long numb in userInts)
Console.Write(" {0}", numb);
Console.WriteLine(Environment.NewLine);
// Sorts the List
userInts.Sort();
// Output the sorted list
Console.WriteLine("Lijst in gesorteerde ordening: ");
foreach (long numb in userInts)
Console.Write(" {0}", numb);
Console.WriteLine();
Console.ReadKey();
List userInts=new List();
对于(int i=0;i<99;i++)
{
字符串userValue=Console.ReadLine();
if(userValue.Contains(“End”))
打破
int userInt;
if(int.TryParse(userValue,out userInt))
添加(userInt);
}
//打印未更改的数字
控制台。WriteLine(“原版opsteling van nummers:”);
foreach(userInts中的long numb)
Write(“{0}”,numb);
Console.WriteLine(Environment.NewLine);
//对列表排序
userInts.Sort();
//输出排序后的列表
Console.WriteLine(“Gesorterde Ording中的Lijst:”);
foreach(userInts中的long numb)
Write(“{0}”,numb);
Console.WriteLine();
Console.ReadKey();
TryParse将返回false,因为End不能转换为整数。
if (Console.ReadLine().Contains("End"))
{
break;
}
List<long> userInts = new List<long>();
for (int i = 0; i < 99; i++)
{
string userValue = Console.ReadLine();
if (userValue.Contains("End"))
break;
int userInt;
if (int.TryParse(userValue, out userInt))
userInts.Add(userInt);
}
// Print the unchanged numbers
Console.WriteLine("De originele opsteling van nummers:");
foreach (long numb in userInts)
Console.Write(" {0}", numb);
Console.WriteLine(Environment.NewLine);
// Sorts the List
userInts.Sort();
// Output the sorted list
Console.WriteLine("Lijst in gesorteerde ordening: ");
foreach (long numb in userInts)
Console.Write(" {0}", numb);
Console.WriteLine();
Console.ReadKey();