C# 显示来自阵列的信息时出现问题
我试图用C#code(控制台应用程序)编写一个简单的程序,它会提示用户输入10个名称,然后以随机顺序(而不是输入名称的顺序)显示最后的10个名称 这就是我取得的成绩:-C# 显示来自阵列的信息时出现问题,c#,arrays,loops,C#,Arrays,Loops,我试图用C#code(控制台应用程序)编写一个简单的程序,它会提示用户输入10个名称,然后以随机顺序(而不是输入名称的顺序)显示最后的10个名称 这就是我取得的成绩:- static void Main(string[] args) { string[] names = new string [10]; int i; for ( i = 0; i < 10 ; i++) { Console.WriteLine("Give me name "
static void Main(string[] args)
{
string[] names = new string [10];
int i;
for ( i = 0; i < 10 ; i++)
{
Console.WriteLine("Give me name " + (i+1) );
names[i] = Console.ReadLine();
}
for (int j = 0; j <= 10; j++)
{
Console.WriteLine(names[j]);
}
Console.ReadLine();
}
static void Main(字符串[]args)
{
字符串[]名称=新字符串[10];
int i;
对于(i=0;i<10;i++)
{
Console.WriteLine(“给我名字”+(i+1));
名称[i]=Console.ReadLine();
}
对于(int j=0;j您可以从输入中得到0到9,但尝试从0到10打印。
数组中不存在第10项。
请按如下方式更正:
for (int j = 0; j < 10; j++)
{
Console.WriteLine(names[j]);
}
for(int j=0;j<10;j++)
{
Console.WriteLine(名称[j]);
}
希望这能有所帮助。问题是您的索引基于0,包含10个条目,但最后一个是数组[9],而不是数组[10]
{弗兰克,保罗,约翰}
所以数组[0]是Frank,
数组[3]超出范围
您的循环使用
for (int j = 0; j <= 10; j++)
{
Console.WriteLine(names[j]);
}
for(int j=0;j要解决错误,只检查小于10(第一个循环从0运行到9,但第二个循环从0运行到10,因此您尝试显示数组中不存在的项。更改j由于@PoweredByOrange,您得到了超出范围的异常,非常感谢您:在调试模式下测试应用程序将在发生异常的行上引发异常,并且还可以查看局部变量及其值。这将显示长度为10(索引0-9)的数组,但j循环到10会导致IndexOutOfRangeException。这可能不会打印所有值。最好的方法是将数组洗牌。
for (int j = 0; j < 10; j++)
{
Console.WriteLine(names[j]);
}
Random random = new Random();
for (int j = 0; j < 10; j++)
{
int randomNumber = random.Next(1,10);
Console.WriteLine(names[randomNumber-1]);
}
Random rnd = new Random();
for (int i = 0; i < names.Length − 1; i++) {
int j = rnd.Next(i, names.Length);
string tmp = names[i];
names[i] = names[j];
names[j] = tmp;
}