两个列表有关系,如何向用户显示它们?

时间:2013-03-23 16:11:26

标签: c#

我的问题是我想制作一个使用两个列表的程序,这对我来说几乎是不可能理解的。好的,所以这笔交易是我想要制作一个程序,你首先键入城市名称,然后输入城市的温度。这就是这种关系的来源。

我已经开始制作一个“列表类”,如下所示:

class citytemp
{
    private string city;
    private double temp;

    public citytemp(string city, double temp)
    {
        this.city = city;
        this.temp = temp;
    }

    public string City
    {
        get { return city; }
        set { city = value; }
    }

    public double Temp
    {
        get { return temp; }
        set { temp = value; }
    }
}

然后我在程序中列出这样的列表

List<citytemp> temps = new List<citytemp>();

这对我来说都很好看。但是,当我试图向用户显示列表时,没有任何显示。我用这些线来表示:

for (int i = 0; i > temps.Count; i++)
{
    Console.WriteLine(temps[i].City, temps[i].Temp);
}

顺便说一句:我通过这些行在列表中添加“东西”:

temps.Add(new citytemp(tempcity, temptemp));

...其中tempcitytemptemp是临时变量。它们只是为了让我更简单地将它们添加到列表中,因为我使用switch语句将它们添加到列表中。

为了使事情更清楚,我的问题是我不知道如何在程序中向用户显示列表。

5 个答案:

答案 0 :(得分:1)

您的问题出在for循环中。将其更改为此

for (int i = 0; i < temps.Count; i++)

即。将大于>的运算符更改为小于<

答案 1 :(得分:0)

for循环中有错误。

for (int i = 0; i > temps.Count; i++)

它应该是:

for (int i = 0; i < temps.Count; i++)

答案 2 :(得分:0)

首先,我不确定“2个列表”是什么意思,因为您的代码中只有一个列表。

然而,你所遇到的“没有显示”的问题很容易解决。

这行代码:

for (int i = 0; i > temps.Count; i++)

应如下所示:

i = 0;
while (i > temps.Count)
{
    ... rest of your loop body here

    i++;
}

如果您阅读此内容,您会注意到for语句的第二部分不是何时终止要继续的时间。

将其改为此,你应该做得很好:

for (int i = 0; i < temps.Count; i++)
                  ^
                  +-- changed from >

答案 3 :(得分:0)

我认为哈希表,特别是字典会帮助你:

var cityTemps = new Dictionary<string, double>();
cityTemps.Add("TestCity", 56.4);

foreach (var kvp in cityTemps)
    Console.WriteLine("{0}, {1}", kvp.Key, kvp.Value);

答案 4 :(得分:0)

除了已经提到的循环之外,请注意Console.WriteLine,因为它将String作为第一个参数,它假设是一种格式,object[] params作为第二个参数。从temps[i].City开始向String传递temps[i].Temp时,它会认为格式和Console.WriteLine("City: {0} Temp: {1}", temps[i].City, temps[i].Temp); 是参数,并且无法正确显示。

你想要的是什么:

"City: {0} Temp: {1}"

这里我使用{{1}}作为字符串的格式和正确的参数。

这个答案是为了避免让您头疼,想知道为什么只显示城市名称。