我有一个文本文件,其中有一对数字,我在List中复制。文本文件有例如:
1 0 30 15 43 23
12 23 10 12 0 1
我想得到每一行的确切数字,因为我想将它与我从控制台输入的数字进行比较。我尝试Split(' ')
,但它不起作用。
我想比较一下这个怎么样呢?
static void Main()
{
StreamReader reader = new StreamReader("file.txt");
using (reader)
{
string currentLine = reader.ReadLine();
while(currentLine!=null)
{
currentLine = reader.ReadLine();
Combinations.Add(currentLine);
}
}
Console.WriteLine("Enter six numbers to check the combinations:");
int a1= int.Parse(Console.ReadLine());
int a2 = int.Parse(Console.ReadLine());
int a3 = int.Parse(Console.ReadLine());
int a4 = int.Parse(Console.ReadLine());
int a5 = int.Parse(Console.ReadLine());
int a6 = int.Parse(Console.ReadLine());
FindWinners(a1, a2, a3, a4, a5, a6);
}
static void FindWinners(int a1,int a2,int a3,int a4,int a5,int a6)
{
foreach(var item in Combinations)
{
Console.WriteLine();
}
}
答案 0 :(得分:2)
我不确定您分割数据时遇到的问题。只要您知道数字组合之间有空格,就可以使用.Split(' ')
,因此请检查并确保文件中的数字之间只有一个空格。
然后,您希望从用户那里获得6个数字,看看它们是否与任何组合相匹配。为此,我会尝试以下(我只是使用包含您提供的数据的List,而不是读取文件):
static List<string> combinations = new List<string> {
"1 0 30 15 100 23",
"12 23 10 12 0 1"
};
public static void Main()
{
Console.WriteLine("Enter six numbers to check the combinations:");
int a1 = int.Parse(Console.ReadLine());
int a2 = int.Parse(Console.ReadLine());
int a3 = int.Parse(Console.ReadLine());
int a4 = int.Parse(Console.ReadLine());
int a5 = int.Parse(Console.ReadLine());
int a6 = int.Parse(Console.ReadLine());
FindWinners(a1, a2, a3, a4, a5, a6);
Console.ReadLine();
}
private static void FindWinners(params int[] numbers)
{
// Sort the numbers from least to greatest
Array.Sort(numbers);
foreach (int[] combo in combinations
// This select makes the string array
.Select(combination => combination.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries))
// This select turns the string array, from the previous select, and turns it into an integer
// array sorted from least to greatest.
.Select(combination => combination.Select(c => Convert.ToInt32(c)).OrderBy(c => c).ToArray()))
{
Console.WriteLine(combo.SequenceEqual(numbers) ? "Winner!" : "Loser!");
}
}
结果:
Enter six numbers to check the combinations:
100
0
30
1
15
23
Winner!
Loser!
FindWinners()
中发生了什么:
所有用户提供的整数都由params
关键字装入整数数组。然后我将foreach
通过每个组合,然后将其转换为整数数组。两个数组都从最小到最大排序,然后combo.SequenceEquals(number)
检查每个元素按顺序彼此相等。如果他们都平等,我输出“赢家!”否则我输出“失败者!”