Pregunta

Hola chicos, escribí este código y tengo dos errores.

  1. Especificador de rango inválido: esperado ',' o ']'
  2. No se puede aplicar la indexación con [] a una expresión de tipo 'int'

¿Puedes ayudar por favor?

    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);
        }
    }
¿Fue útil?

Solución

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

Otros consejos

1 - No tiene que especificar la longitud de la matriz, solo diga nuevo int []

2 - número es solo un número entero, creo que está intentando acceder a los números [i]

Para 1:

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

Para 2:

int number = (int)numbers[i];

Está utilizando número , donde debería tener números (plural).

¿Por qué no lo siguiente para el # 1?

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

A pesar de declarar esto como un int [12] (¿como la intención aparente?), parece que solo estamos usando los valores de 10 a 1, inclusive. ¿Por qué usar un foreach en este escenario, cuando un para es mucho más claro en su intención?

Deberías inicializar la matriz como

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

el compilador establecerá el tamaño para usted. Pero lo estás haciendo de la manera difícil. Prueba esto:

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

Si está usando .Net 3.5, también puede usar System.Linq.Enumerable para crear un rango:

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

Esto tomaría el lugar de ArrayList, que es bastante inútil en 3.5. Dado que recién está comenzando, al principio será más fácil comprender el ArrayList, pero tenga en cuenta cosas como Genéricos e IEnumerables, son muy importantes.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top