Frage

Hallo Leute, ich habe diesen Code geschrieben und ich habe zwei Fehler.

  1. Ungültiger Rangspezifizierer: erwartet 'oder'] '' '
  2. Die Indexierung kann nicht mit [] auf einen Ausdruck des Typs 'int' angewendet werden

Kannst du mir bitte helfen?

    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);
        }
    }
War es hilfreich?

Lösung

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

Andere Tipps

1 - Sie müssen nicht die Länge des Arrays angeben. Sagen Sie einfach New int [

2 - Nummer ist nur eine Ganzzahl, ich denke, Sie versuchen, auf Zahlen zuzugreifen [i

Für 1:

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

Für 2:

int number = (int)numbers[i];

Du benutzt number wo du haben solltest numbers (Plural).

Warum nicht das Folgende für #1?

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

Obwohl dies als int [12] erklärt wurde (als offensichtliche Absicht?), Scheint es, als würden wir nur die Werte von 10 bis 1 inklusive verwenden. Warum a verwenden a foreach in diesem Szenario, wenn a for Ist seine Absicht viel klarer?

Sie sollten das Array als initialisieren

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

Der Compiler setzt die Größe für Sie. Aber du machst es auf die harte Tour. Versuche dies:

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

Wenn Sie .NET 3.5 verwenden, können Sie auch System.LINQ.Enumerable verwenden, um einen Bereich zu erstellen:

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

Dies würde den Platz der ArrayList einnehmen, die in 3,5 ziemlich sinnlos ist. Da Sie gerade erst anfangen, wird die ArrayList wahrscheinlich zunächst einfacher zu verstehen sein, aber denken Sie an Generika und Ienumerables im Auge, sie sind sehr wichtig.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top