我正在创建一个小型测验控制台应用程序。我列出了一个包含 3 个问题的列表。我怎样才能让程序随机选择一个问题并将其打印到控制台中?我尝试了一些
我正在创建一个小型测验控制台应用程序。我列出了包含 3 个问题的列表。我怎样才能让程序随机选择一个问题并将其打印到控制台中?
我尝试了一些不同的代码,但由于某种原因似乎无法使其工作。这是我尝试的最后一个代码,我从该网站的另一个用户那里获得,但我收到了错误:
当前上下文中不存在名称“string”。
\'由于 Quiz.Questions.main()
返回 void ,因此 return 关键字后面不能跟对象表达式\'。
这是我尝试的最后一段代码:
class Questions
{
public static void main()
{
var questions = new List<string>{
"question1",
"question2",
"question3"};
int index = Random.Next(strings.Count);
questions.RemoveAt(index);
return questions;
}
}
谢谢大家的回复。我通过创建数组而不是列表解决了我的问题。这是我现在的代码:
class Questions
{
public static void main()
{
string[] questions = new string[3];
questions[0] = "question1";
questions[1] = "question2";
questions[2] = "question3";
Random rnd = new Random();
Console.WriteLine(questions[rnd.Next(0,2)]);
}
}
\'名称‘string’在当前上下文中不存在\'
我想你想要
int index = random.Next(questions.Count); // according to the lower-case random see last paragraph
而不是
int index = Random.Next(strings.Count);
因为没有同名的变量 strings
,而您无论如何都想删除一个问题。
另外,您无法从 void
方法中返回任何内容。因此,创建一个返回列表的方法:
private Random random = new Random();
List<string> GetRemoveQuestion(List<string> questions)
{
int index = random.Next(questions.Count);
questions.RemoveAt(index);
return questions;
}
编辑 :最后但并非最不重要的一点是,您不能使用 Random.Next
。这将假定存在一种 static
Next
方法,但 Random
事实并非如此。因此,我在上面展示了如何创建和使用实例。请注意,您不应该在方法本身中创建它,因为它是用当前时间播种的。如果您非常快速地调用此方法,您会经常得到相同的“随机”值。
请参阅 msdn 的备注部分 以获取更多详细信息。