列表复杂度
List Complexity
我已经完全理解了这些列表,但在我对它失望之前我还需要知道一件事
我创建了一个列表,一个是字符串,另一个是 int
The first string name is jack and its value is 2 The Second string
name is john and its values is 5 But as result I am taking
John's value 2 John's value 5
Jack's value 2 Jack's value 5
如何使第一个字符串只有一个值而第二个字符串有自己的值
List<string> NameList = new List<string>();
Console.WriteLine("Please insert a name ");
string name = Console.ReadLine();
NameList.Add(name);
List<int> answerList = new List<int>();
Console.WriteLine("Please insert a value");
int x = int.Parse(Console.ReadLine());
answerList.Add(x);
Console.WriteLine("Do you want to calculate more ? (yes/no)");
string answer = Console.ReadLine();
answer.Trim();
bool isYes = true;
while (isYes)
{
if (answer == "yes")
{
Console.WriteLine("Please insert another name/value");
name = Console.ReadLine();
x = int.Parse(Console.ReadLine());
NameList.Add(name);
answerList.Add(x);
Console.WriteLine("Do you want to calculate more ? (yes/no)");
answer = Console.ReadLine();
answer.Trim();
}
else if (answer == "no")
{ break; }
} string are = " are ";
foreach (var NAME in NameList)
foreach (var item in answerList)
Console.WriteLine("The values of " + NAME + are +item);
问题出在这里:
foreach (var NAME in NameList)
foreach (var item in answerList)
您正在执行 交叉联接,将 NameList
中的每个名称与 answerList
中的每个值匹配。您有几个选择:
- 创建具有
Name
和 Value
属性的 class 并将该 class 的实例存储在单个列表中
- 使用
Zip
Linq 函数逐个元素排列列表并在 foreach
中迭代结果
现在要养成的其他习惯:
使用一致的标准大写。对变量使用驼峰命名法(例如 nameList
、answerList
),对属性使用 PascalCase(Name
、Answer
)。 常量 值
使用全部大写
记住 Trim
returns 修剪后的字符串,所以 answer.Trim()
什么都不做(它会丢弃输出Trim
)。请改用 answer = answer.Trim()
。
我已经完全理解了这些列表,但在我对它失望之前我还需要知道一件事
我创建了一个列表,一个是字符串,另一个是 int
The first string name is jack and its value is 2 The Second string name is john and its values is 5 But as result I am taking John's value 2 John's value 5
Jack's value 2 Jack's value 5
如何使第一个字符串只有一个值而第二个字符串有自己的值
List<string> NameList = new List<string>();
Console.WriteLine("Please insert a name ");
string name = Console.ReadLine();
NameList.Add(name);
List<int> answerList = new List<int>();
Console.WriteLine("Please insert a value");
int x = int.Parse(Console.ReadLine());
answerList.Add(x);
Console.WriteLine("Do you want to calculate more ? (yes/no)");
string answer = Console.ReadLine();
answer.Trim();
bool isYes = true;
while (isYes)
{
if (answer == "yes")
{
Console.WriteLine("Please insert another name/value");
name = Console.ReadLine();
x = int.Parse(Console.ReadLine());
NameList.Add(name);
answerList.Add(x);
Console.WriteLine("Do you want to calculate more ? (yes/no)");
answer = Console.ReadLine();
answer.Trim();
}
else if (answer == "no")
{ break; }
} string are = " are ";
foreach (var NAME in NameList)
foreach (var item in answerList)
Console.WriteLine("The values of " + NAME + are +item);
问题出在这里:
foreach (var NAME in NameList)
foreach (var item in answerList)
您正在执行 交叉联接,将 NameList
中的每个名称与 answerList
中的每个值匹配。您有几个选择:
- 创建具有
Name
和Value
属性的 class 并将该 class 的实例存储在单个列表中 - 使用
Zip
Linq 函数逐个元素排列列表并在foreach
中迭代结果
现在要养成的其他习惯:
使用一致的标准大写。对变量使用驼峰命名法(例如
nameList
、answerList
),对属性使用 PascalCase(Name
、Answer
)。 常量 值 使用全部大写
记住
Trim
returns 修剪后的字符串,所以answer.Trim()
什么都不做(它会丢弃输出Trim
)。请改用answer = answer.Trim()
。