1

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

我首先创建了一个“列表类”,如下所示:

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));

... wheretempcitytemptemp是临时变量。它们只是为了让我更容易将它们添加到列表中,因为我正在使用switch语句将它们添加到列表中。

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

4

5 回答 5

1

您的问题出在 for 循环中。改成这个

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

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

于 2013-03-23T16:17:13.733 回答
0

您的 for 循环中有错误。

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

它应该是:

for (int i = 0; i < temps.Count; i++)
于 2013-03-23T16:17:34.410 回答
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 >
于 2013-03-23T16:17:54.703 回答
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);
于 2013-03-23T16:18:48.847 回答
0

除了已经提到的循环之外,还要小心,Console.WriteLine因为它接受 aString作为第一个参数,它假定它是一种格式和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}"其用作字符串的格式和正确的参数。

这个答案是为了让您在以后想知道为什么只显示城市名称时不会头疼。

于 2013-03-23T16:19:57.683 回答