【发布时间】:2011-11-15 18:48:43
【问题描述】:
对不起,如果这是一个愚蠢的菜鸟问题。我正在为我的女朋友做一个非常小的项目 - 一个国家列表,她必须输入他们的首都(不起眼的国家,请注意)。由于我是一个完全的初学者,我不得不求助于使用两个数组,一个用于国家,另一个用于首都,并具有匹配的索引。这样就很容易检查正确的答案,而且我不必解析任何文本文件或使用任何数据库。我正在使用随机数使其更有趣。为了阻止程序一遍又一遍地生成相同的国家/地区,我使用了一个整数列表来跟踪已使用的索引,并在列表包含前一个索引时重新生成数字。很基本的东西。令人惊讶的是,这一切都有效。
但是我遇到了问题。基本上,我如何检查我已经用完了国家? :) 我不能简单地对照我的国家/地区数组检查列表大小,因为列表可能包含比数组更多的值,并且 if (taken.Equals(Countries.Length)) 似乎不起作用。或者我在代码中找不到正确的位置来放置这个检查。
很抱歉,这很简单,但我似乎找不到合适的解决方案。
编辑 哇,多么神奇的社区。在从星巴克到我家的短暂步行中,我得到了几十个涵盖大量设计技术的高质量答案。这太棒了!谢谢大家!显然,问题已得到解答,但如果有人有任何额外的 cmets,我会为您发布代码。
// 现在只是一个测试,13 个国家/地区
string[] Countries = {"Belgium", "France", "The Netherlands", "Spain", "Monaco", "Belarus", "Germany",
"Portugal", "Ukraine", "Russia", "Sweden", "Denmark", "South Africa"};
string[] Capitals = {"Brussels", "Paris", "Amsterdam", "Madrid", "Monaco", "Minsk", "Berlin",
"Lisbon", "Kiev", "Moscow", "Stockholm", "Copenhagen", "Pretoria"};
Random number = new Random();
List<int> taken = new List<int>();
int index;
int score = 0;
private int Generate()
{
while (true) {
index = number.Next(0, Countries.Length);
if (taken.Contains(index)) continue;
// THIS IS WHAT I WAS INITIALLY TRYING TO DO
if (taken.Equals(Countries.Length)) {
MessageBox.Show("Game over!");
return -1;
}
return index;
}
}
private void Form1_Load(object sender, EventArgs e)
{
index = Generate();
taken.Add(index);
label1.Text = Countries[index];
label3.Text = "0 out of " + Countries.Length.ToString();
}
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text.Trim() == Capitals[index].ToString()) {
label2.Text = "You win!";
index = Generate();
taken.Add(index);
label1.Text = Countries[index];
textBox1.Clear();
label3.Text = ++score + " out of " + Countries.Length.ToString();
}
else {
label2.Text = "Wrong!";
textBox1.Clear();
}
}
}
}
【问题讨论】:
-
List 怎么能比数组包含更多的值?
-
那么,您只是想创建一个国家/首都对的随机排列以供回答?
-
好吧,也许不是,这可能是我的夸大其词,但我仍然找不到正确的方法来检查它们的长度是否相等以及将我的代码放在哪里。目前程序只是在我得到最后一个答案时冻结。
-
这里没有答案。只是想提一下,我在 9 年前为我的女朋友编写了这个 exact 程序。
-
只是我添加了代码的更新。还必须承认,我使用 List
表示“采取”只是因为它有一个 Add() 方法,而数组没有......