Question

Bonjour les gars, j’ai écrit ce code et j’ai deux erreurs.

  1. Spécificateur de rang non valide: attendu ',' ou ']'
  2. Impossible d'appliquer l'indexation avec [] à une expression de type 'int'

Pouvez-vous aider s'il vous plaît?

    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);
        }
    }
Était-ce utile?

La solution

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);
            }
        }
    }
}

Autres conseils

1 - Il n'est pas nécessaire de spécifier la longueur du tableau, il suffit de dire new int []

2 - le nombre est juste un entier, je pense que vous essayez d'accéder aux nombres [i]

Pour 1:

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

Pour 2:

int number = (int)numbers[i];

Vous utilisez numéro où vous devriez avoir chiffres (pluriel).

Pourquoi pas le suivant pour # 1?

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

Bien que nous déclarions cela comme un int [12] (comme l'intention apparente?), il semble que nous n'utilisions que les valeurs comprises entre 10 et 1, inclus. Pourquoi utiliser un foreach dans ce scénario, alors qu'un pour est beaucoup plus clair dans son intention?

Vous devriez initialiser le tableau en tant que

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

le compilateur définira la taille pour vous. Mais vous le faites à la dure. Essayez ceci:

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

Si vous utilisez .Net 3.5, vous pouvez également utiliser System.Linq.Enumerable pour créer une plage:

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

Ceci prendrait la place de ArrayList, ce qui est plutôt inutile dans la version 3.5. Comme vous venez juste de commencer, ArrayList sera probablement plus facile à comprendre au début, mais gardez à l'esprit des choses comme Generics et IEnumerables, elles sont très importantes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top