البرمجة

كيفية قراءة مدخلات مصفوفة من ArrayList في Java

المشكلة الرئيسية في الشيفرة هي أنك تقوم بمحاولة إضافة عناصر إلى ArrayList داخل الحلقة while دون أن تقرأ الخطوط القادمة من المدخل بواسطة input.nextLine() أولاً. بمجرد قراءة عدد القوائم الفرعية، يجب عليك قراءة السطر التالي للحصول على العناصر الداخلية لكل قائمة فرعية.

إليك الكود المعدل الذي يعالج هذه المشكلة:

java
import java.util.ArrayList; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); int a = input.nextInt(); ArrayList[] al = new ArrayList[a]; input.nextLine(); // يجب عليك قراءة السطر الفارغ بعد القراءة الأولية لعدد القوائم الفرعية for (int i = 0; i < a; i++) { al[i] = new ArrayList<>(); // قم بإنشاء ArrayList جديدة هنا String[] elements = input.nextLine().split(" "); // قراءة العناصر المقدمة بواسطة المستخدم وتقسيمها بفاصلة for (String element : elements) { al[i].add(Integer.parseInt(element)); // تحويل النصوص إلى أعداد صحيحة وإضافتها إلى ArrayList } } // طباعة النتيجة for (int i = 0; i < a; i++) { System.out.println("ArrayList " + i + ": " + al[i]); } } }

هذا الكود يقرأ عددًا من القوائم الفرعية (ArrayLists) من المستخدم، حيث يتوقع أن يكون الإدخال على النحو التالي:

3 1 2 3 4 5 6 7 8 9

الإخراج سيكون:

less
ArrayList 0: [1, 2, 3] ArrayList 1: [4, 5, 6, 7] ArrayList 2: [8, 9]

أتمنى أن يساعدك هذا الشرح والكود المعدل. إذا كان لديك أي أسئلة أو استفسارات أخرى، فلا تتردد في طرحها.

المزيد من المعلومات

بالطبع! يمكنك إضافة معلومات إضافية للتعليمات البرمجية أو لسياق السؤال بشكل عام. على سبيل المثال، يمكنك تحسين الأداء عن طريق استخدام StringBuilder لبناء النص النهائي بدلاً من طباعته مباشرة في كل دورة. قد يكون من المفيد أيضًا إضافة بعض التحقق من الصحة للتأكد من أن المستخدم قدم إدخالًا صالحًا (مثل فحص أن الأرقام المدخلة فعلاً أرقام صحيحة)، ومن ثم التعامل مع الأخطاء إذا لزم الأمر.

زر الذهاب إلى الأعلى