неверное количество индексов внутри [], ожидается 5 - PullRequest
0 голосов
/ 11 октября 2019

У меня проблема с моим кодом. Я создал многомерный массив для хранения элементов человека.

Теперь Visual Studio сообщает мне, что в моем коде есть 2 разные ошибки.

Первая: неправильное количество индексов внутри [], ожидаемое, и второе полученное сообщение об ошибке:: не может неявно преобразовать тип string[*,*] в string[*,*,*,*,*]

Код:

static void Main(string[] args)
{
    //wil je meer vrienden in de array pas hier het aantal aan :)
    int vrienden = 2;

    //maak array. de comma in de brackets is voor meer items, eerste waarde voor hoeveel mensen, tweede aantal elementen
    string[, , , ,] vriendenarray = new string[vrienden, 5];
    //^^ here i get the error code of cannot implicitly convert type 'string[*,*] to string[*,*,*,*,*]'

    Console.WriteLine("welkom bij het online vriendenboekje!");
    Console.WriteLine("hier kan je een antaal elementen van je vrienden opslaan");

    //vul de array met de elementen / vraag de mensen voor input
    for (int i = 0; i < vrienden; ++i)
    {
        Console.Write("Vul hier de naam in van je vriend -->");
        vriendenarray[i, 0] = Console.ReadLine(); //<-- here i get the error message of wrong number of indices inside []
        Console.Write("Vul hier zijn/haar favoriete kleur in -->");
        vriendenarray[i, 1] = Console.ReadLine(); 
        Console.Write("Vul hier zijn/haar favourite eten in -->");
        vriendenarray[i, 2] = Console.ReadLine();
        Console.Write("Vul hier zijn/haar favourite seizoen in -->");
        vriendenarray[i, 3] = Console.ReadLine();
        Console.Write("Vul hier zijn/haar favourite dier in -->");
        vriendenarray[i, 4] = Console.ReadLine();
    }

    //leest/displayed wat er allemaal is ingevuld
    for(int i = 0; i < vrienden; i++)
    {
        Console.WriteLine("Vriend nummer {0} is {1} en zijn favoriete elementen zijn {2}{3}{4}", i, vriendenarray[i, 0], vriendenarray[i, 1], vriendenarray[i, 2], vriendenarray[i, 3], vriendenarray[i, 4]);
    }
}

Ответы [ 4 ]

3 голосов
/ 11 октября 2019

Вы на самом деле работаете с массивом 2D : обратите внимание, что вы всегда обращаетесь к нему как

vriendenarray[x, y]

, где x и y некоторые значения. Вот почему

string[,] vriendenarray = new string[vrienden, 5];

...

Редактировать : я предлагаю реализовать специализированный класс с свойствами , например

public class Vriend {
  public string Naam {get; set;}
  ...
  public string Dier {get; set;}
}

тогда вы можете работать с очевидным 1D массивом:

// Now we have an array of friend (not misterious 2d array of strings)
Vriend[] vriendenarray = new Vriend[vrienden];

// We create friends
for (int i = 0; i < vriendenarray.Length; ++i)
  vriendenarray[i] = new Vriend();

for (int i = 0; i < vriendenarray.Length; ++i) {
  // Please, note how it's easy now: we assign Naam, not second index 0
  Console.Write("Vul hier de naam in van je vriend -->");
  vriendenarray[i].Naam = Console.ReadLine();  
  ...  
  Console.Write("Vul hier zijn/haar favourite dier in -->");
  vriendenarray[i].Dier = Console.ReadLine();
}

// for each vriend in vriendenarray is more readable
foreach (var vriend in vriendenarray)
{
    // String interpolation allows us to put code - vriend.Naaam - within string
    Console.WriteLine($"Vriend nummer {vriend.Naaam}...");
} 
0 голосов
/ 11 октября 2019

Если вы хотите создать 5-мерный массив, вы должны сделать следующее:

string[,,,,] vriendenarray = new string[vrienden, 5,1,1,1];

Ваше объявление неверно, в соответствии с этой ошибкой вы должны указать правильные назначения, такие как:

 vriendenarray[i, 0] = Console.ReadLine(); 

до

 vriendenarray[i, 0,0,0,0] = Console.ReadLine(); 

, потому что vriendenarray имеет 5 измерений

0 голосов
/ 11 октября 2019

Вы объявили измерение в своем списке и хотели бы назначить другое определение, этот код исправлен, но нет смысла объявлять все эти деменции:

string[,] vriendenarray = new string[vrienden, 5];

Этот код будет работать для вас, ноЯ думаю, вам не нужно объявлять все эти таблицы:

//wil je meer vrienden in de array pas hier het aantal aan :)
int vrienden = 2;

//maak array. de comma in de brackets is voor meer items, eerste waarde voor hoeveel mensen, tweede aantal elementen
string[,,,,] vriendenarray = new string[vrienden, 5,1,1,1];
//^^ here i get the error code of cannot implicitly convert type 'string[*,*] to string[*,*,*,*,*]'

Console.WriteLine("welkom bij het online vriendenboekje!");
Console.WriteLine("hier kan je een antaal elementen van je vrienden opslaan");

//vul de array met de elementen / vraag de mensen voor input
for (int i = 0; i < vrienden; ++i)
{
    Console.Write("Vul hier de naam in van je vriend -->");
    vriendenarray[i, 0, 0, 0, 0] = Console.ReadLine(); //<-- here i get the error message of wrong number of indices inside []
    Console.Write("Vul hier zijn/haar favoriete kleur in -->");
    vriendenarray[i, 1, 0, 0, 0] = Console.ReadLine();
    Console.Write("Vul hier zijn/haar favourite eten in -->");
    vriendenarray[i, 2, 0, 0, 0] = Console.ReadLine();
    Console.Write("Vul hier zijn/haar favourite seizoen in -->");
    vriendenarray[i, 3, 0, 0, 0] = Console.ReadLine();
    Console.Write("Vul hier zijn/haar favourite dier in -->");
    vriendenarray[i, 4, 0, 0, 0] = Console.ReadLine();
}

//leest/displayed wat er allemaal is ingevuld
for (int i = 0; i < vrienden; i++)
{
    Console.WriteLine("Vriend nummer {0} is {1} en zijn favoriete elementen zijn {2}{3}{4}", i, vriendenarray[i, 0, 0, 0, 0], vriendenarray[i, 1, 0, 0, 0], vriendenarray[i, 2, 0, 0, 0], vriendenarray[i, 3, 0, 0, 0], vriendenarray[i, 4, 0, 0, 0]);
}
0 голосов
/ 11 октября 2019

Добро пожаловать! Как обычно, Visual Studio прав;)

Говоря string[, , , ,], вы объявляете массив с пятью измерениями. Но вы инициализируете массив с двумя измерениями.

Из-за вашего оставшегося кода, я бы предположил, что вам нужен двумерный массив. Вы можете объявить это с помощью string[,] vriendenarray = new string[vrienden, 5]; или var vriendenarray = new string[vrienden, 5];.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...