سؤال

مرحبًا يا شباب ، كتبت هذا الرمز ولدي خطأان.

  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);
        }
    }
هل كانت مفيدة؟

المحلول

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

نصائح أخرى

1 - ليس عليك تحديد طول المصفوفة فقط قول int جديد [

2 - الرقم هو مجرد عدد صحيح ، أعتقد أنك تحاول الوصول إلى الأرقام [أنا

ل 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 (جمع).

لماذا لا يلي رقم 1؟

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

على الرغم من الإعلان عن ذلك على أنه int [12] (كقصد واضح؟) ، يبدو أننا نستخدم القيم فقط من 10 إلى 1 ، شاملة. لماذا تستخدم أ foreach في هذا السيناريو ، عندما أ for هل أكثر وضوحًا في نيتها؟

يجب أن تقوم بتهيئة المصفوفة باسم

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.Anress لإنشاء نطاق:

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

هذا من شأنه أن يحل محل ArrayList ، وهو لا معنى له في 3.5. منذ أن بدأت للتو ، من المحتمل أن يكون من الأسهل فهم قائمة ArrayList في البداية ، ولكن تبقي أشياء مثل الأدوية الجيرية و iAnumerables في الاعتبار ، فهي مهمة للغاية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top