2008-10-23 9 views
0

Bonjour les gars j'ai écrit ce code et j'ai deux erreurs.Pourquoi ce code ne fonctionne pas?

  1. spécificateur rang incorrect: attendu '' ou ']'
  2. ne peuvent pas 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); 
     } 
    } 
+0

Ce code est illisible. Utilisez le balisage disponible pour l'affichage du code. – JesperE

+0

Indentez tout votre code avec quatre espaces pour le rendre plus lisible ... –

+0

@arin, vérifiez et assurez-vous que j'ai formaté ce droit. Il semble que Markup ne vous laissera pas faire 4 niveaux de retrait ...? –

Répondre

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

1 - Vous ne devez pas spécifier la longueur du tableau juste dire new int []

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

4

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 number où vous devriez avoir numbers (pluriel).

+0

Grand merci à beaucoup d'homme qui résolvent le problème – arin

0

Vous devriez être initialisant le tableau comme

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

le compilateur définir 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 gamme:

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

Cela prendrait la place du ArrayList, qui est assez inutile en 3.5. Puisque vous commencez tout juste, l'ArrayList sera probablement plus facile à comprendre au début, mais gardez à l'esprit des choses comme Generics et IEnumerables, elles sont très importantes.

0

Pourquoi pas ce qui suit pour # 1?

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

En dépit de déclarer cela comme un int [12] (comme l'intention apparente?), Il semble que nous n'utilisons les valeurs de 10 à 1, y compris. Pourquoi utiliser un foreach dans ce scénario, quand un for est beaucoup plus clair dans son intention?

+0

cela pourrait fonctionner merci, mais DIEU je déteste la boucle for :-) – arin

+0

Si nous cherchons la clarté - pourquoi ne pas simplement numbers.AddRange (new int [] {10, ..., 1}? Ou, à ce sujet nombres = new ArrayList (new int [] {10, ..., 1}). –

+0

Arin, oserais-je demander pourquoi vous détestez la boucle for? Dans ce cas, il est non seulement plus clair, mais probablement plus efficace que de créer un nouveau tableau juste pour l'utiliser uniquement pour la population. bon appel. –

Questions connexes