Невозможно применить индексирование с помощью [] к выражению типа «Массив» - PullRequest
0 голосов
/ 01 июля 2018

Я получаю «Невозможно применить индексирование с помощью [] к выражению типа« Массив »» для приведенного ниже кода. Цель - создать шаблон калькулятора и затем вызвать эти методы для выполнения различных операций. Ошибки появляются в местах, помеченных // ЗДЕСЬ. Пожалуйста, помогите. Я новичок, когда дело доходит до кодирования на c #, поэтому вся помощь приветствуется, и мне бы хотелось, чтобы кто-то мог объяснить мне и эту проблему. Спасибо

private static Array NumberFeedLengthDecider()
{
    Console.WriteLine("Please enter how many numbers that you would like to add.");
    int i = Convert.ToInt32(Console.ReadLine());
    int[] numbers = new int[i];

    return numbers;
}
private static int NumberFeed(Array numbers)
{
    Console.WriteLine("Please enter the numbers one by one, each followed by the 'Enter' key.");
    int i = numbers.Length;

    for (int counter = 0; counter < i; counter++)
    {
        int temp = Convert.ToInt32(Console.ReadLine());
        numbers[counter] = temp; //HERE
    }
    return i;
}
private static void NumberDisplay(Array numbers)
{
    Console.WriteLine("The numbers you have entered are: ");
    int i = (numbers.Length);

    for (int x = 0; x < i; x++)
    {
        Console.WriteLine(numbers[x]); //HERE
    }
}

По сути, я хочу создать метод для определения количества чисел, над которыми нужно выполнить операции, который является первым (numberFeedLengthDecider), затем другим методом для подачи чисел в этот массив (NumberFeed), а затем другим метод для отображения этой группы чисел (NumberDisplay). но по какой-то причине я не могу заставить его работать

Ответы [ 2 ]

0 голосов
/ 01 июля 2018

Вы можете переписать этот код примерно так Проверьте интерфейс IEnumerable и класс List Этот код чище и удаляет метод NumberFeedLengthDecider, этот метод создает помехи в коде. Когда вы не знаете, сколько входных данных у вас будет, используйте класс List, он использует больше памяти, чем классический массив, но выполняет работу в подобных ситуациях. Для лучших преобразований проверьте методы TryParse и Parse (например, int.TryParse () и int.Parse ()) и работайте больше с обработкой исключений.

public List<int> Insert() 
{
      //Output here something to the console

      List<int> numbers  = new List<int>();

      while(true) 
      {
            var input = Console.ReadLine();
            if(input.ToLower() == "done") break;
            try 
            {

                 numbers.Add(Convert.Int32(input));
            }
            catch(FormatException e)
            {
                  Console.WriteLine(e.Message);
            }
     }
     return numbers;

}

public void Print(IEnumerable<int> numbers)
{
     foreach(var num in numbers) 
     {
          Console.WriteLine(num);
     }
}
0 голосов
/ 01 июля 2018

Array - базовый класс для массивов, его элементы не "строго типизированы"; в него можно положить любой предмет.

Поскольку вы, похоже, имеете дело только с int элементами, вам следует использовать int[] там, где вы сейчас используете Array. Затем вы можете получить доступ к элементам с помощью индексации [] и убедиться, что каждый элемент является int для загрузки.

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