Почему этот код не работает? - PullRequest
0 голосов
/ 24 октября 2008

Привет, ребята, я написал этот код, и у меня есть две ошибки.

  1. Неверный указатель ранга: ожидается ',' или ']'
  2. Невозможно применить индексирование с помощью [] к выражению типа 'int'

Можете ли вы помочь, пожалуйста?

    static void Main(string[] args)
    {
        ArrayList numbers = new ArrayList();

        foreach (int number in new int[12] {10,9,8,7,6,5,4,3,2,1}) //error No.1
        {
            numbers.Add(number);
        }

        numbers.Insert(numbers.Count - 1, 75);
        numbers.Remove(7);
        numbers.RemoveAt(6);

        for(int i=0; i<numbers.Count; i++)
        {
            int number = (int) number[i]; // error No.2
            Console.WriteLine(number);
        }
    }

Ответы [ 5 ]

6 голосов
/ 24 октября 2008

1 - вам не нужно указывать длину массива, просто скажите new int []

2 - число - это целое число, я думаю, вы пытаетесь получить доступ к номерам [i]

4 голосов
/ 24 октября 2008

Для 1:

foreach (int number in new int[] {10,9,8,7,6,5,4,3,2,1})

Для 2:

int number = (int)numbers[i];

Вы используете number там, где должно быть numbers (множественное число).

3 голосов
/ 24 октября 2008
using System;
using System.Collections;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            ArrayList numbers = new ArrayList();
            foreach (int number in new int[] { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 })
            {
                numbers.Add(number);
            }
            numbers.Insert(numbers.Count - 1, 75);
            numbers.Remove(7);
            numbers.RemoveAt(6);
            for (int i = 0; i < numbers.Count; i++)
            {
                int number = (int)numbers[i];
                Console.WriteLine(number);
            }
        }
    }
}
0 голосов
/ 24 октября 2008

Почему бы не следующее для # 1?

    for (int x = 10; x > 0; --x)
    {
        numbers.Add(number);
    }

Несмотря на то, что мы объявили это как int [12] (как очевидное намерение?), Похоже, что мы используем только значения от 10 до 1 включительно. Зачем использовать foreach в этом сценарии, когда for гораздо яснее в своем намерении?

0 голосов
/ 24 октября 2008

Вы должны инициализировать массив как

new int[] { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };

компилятор установит размер для вас. Но вы делаете это трудным путем. Попробуйте это:

for (int i = 10; i > 0; i-- )
{
    numbers.Add(i);
}

Если вы используете .Net 3.5, вы также можете использовать System.Linq.Enumerable для создания диапазона:

IEnumerable<int> numbers = Enumerable.Range(1, 10).Reverse();

Это заняло бы место ArrayList, который довольно бесполезен в 3.5. Поскольку вы только начинаете, ArrayList, вероятно, поначалу будет легче понять, но помните о таких вещах, как Generics и IEnumerables, они очень важны.

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