Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 显示来自阵列的信息时出现问题_C#_Arrays_Loops - Fatal编程技术网

C# 显示来自阵列的信息时出现问题

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 "

我试图用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 " + (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;
}