البرمجة

برمجة وفرز الأرقام بلغة Java: دليل تعلم المبتدئين

عند النظر إلى الكود البرمجي الذي قدمته، يبدو أن هناك بعض الأخطاء في الطريقة التي قمت بها لتخزين الأرقام في مصفوفة. دعونا نقوم بتصحيح هذه الأخطاء ونقدم لك شرحاً تفصيلياً لفهم الطريقة الصحيحة لتنفيذ برنامج الفرز.

أولاً وقبل كل شيء، يجب عليك تحديد طريقة لإنهاء إدخال المستخدم عند الحاجة، وهذا يمكن أن يكون من خلال إدخال قيمة خاصة (مثل -1) أو عند الضغط على مفتاح Enter. سأستخدم في هذا المثال قيمة -1.

ثانياً، يجب عليك استخدام ArrayList بدلاً من مصفوفة عادية لأن حجم ArrayList يمكن أن يتغير أثناء التشغيل، بينما حجم المصفوفة يكون ثابتاً.

إليك الكود المصحح:

java
import java.util.ArrayList; import java.util.Scanner; class SortingProgram { public static void main(String[] args) { Scanner scan = new Scanner(System.in); ArrayList numbers = new ArrayList<>(); System.out.println("Enter integers to sort (enter -1 to finish):"); while (true) { int input = scan.nextInt(); if (input == -1) { break; } numbers.add(input); } // قم بتحويل ArrayList إلى مصفوفة لتنفيذ الفرز int[] arr = new int[numbers.size()]; for (int i = 0; i < numbers.size(); i++) { arr[i] = numbers.get(i); } // قم بتنفيذ خوارزمية الفرز هنا (يمكنك استخدام Arrays.sort(arr) للفرز) // ... // اطبع النتائج System.out.println("Sorted integers:"); for (int num : arr) { System.out.print(num + " "); } } }

يرجى ملاحظة أنه يجب عليك تنفيذ خوارزمية الفرز بعد قراءة الأرقام من المستخدم، ويمكنك استخدام Arrays.sort(arr) لتنفيذ الفرز إذا كنت تستخدم مصفوفة.

هذا الكود يمكنك من قراءة أعداد من المستخدم حتى يقوم بإدخال -1، ثم يقوم بفرزها وطباعة النتائج.

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

عند البداية، يُلاحظ أن البرنامج البرمجي الخاص بك يتعامل مع إدخال المستخدم بشكل لا نهائي دون تحديد عدد الأرقام التي سيُدخلها المستخدم. لكن، هناك بعض الإشكاليات في الكود تحتاج إلى إصلاح.

أولًا، في السطر arr = new int[j];، يجب عليك أن تعلم أن هذا السطر يقوم بإعادة تهيئة المصفوفة في كل دورة من الحلقة، وبالتالي يتم فقدان البيانات السابقة المدخلة. لذلك، يُفضل استخدام هيكل بيانات يسمح بتوسيع الحجم ديناميكيًا، مثل ArrayList.

ثانيًا، في السطر if (arr[j] == '\n') {break;}، يبدو أنك تحاول فحص إذا كان المستخدم قد قام بالضغط على Enter. ومع ذلك، يجب عليك استخدام scan.nextLine() بدلاً من scan.nextInt() لقراءة السلسلة النصية، ومن ثم قم بتحويلها إلى عدد صحيح.

لتوضيح، إليك الكود المصحح مع تصحيح الأخطاء المذكورة:

java
import java.util.ArrayList; import java.util.Scanner; class SortingProgram { public static void main(String[] args) { Scanner scan = new Scanner(System.in); ArrayList numbers = new ArrayList<>(); System.out.println("Enter integers to sort (enter -1 to finish):"); while (true) { String input = scan.nextLine(); // قم بفحص إذا كان المستخدم أدخل -1 لإنهاء البرنامج if (input.equals("-1")) { break; } try { // قم بتحويل السلسلة إلى عدد صحيح int num = Integer.parseInt(input); numbers.add(num); } catch (NumberFormatException e) { System.out.println("Invalid input. Please enter a valid integer or -1 to finish."); } } // قم بتحويل ArrayList إلى مصفوفة لتنفيذ الفرز int[] arr = new int[numbers.size()]; for (int i = 0; i < numbers.size(); i++) { arr[i] = numbers.get(i); } // قم بتنفيذ خوارزمية الفرز هنا (يمكنك استخدام Arrays.sort(arr) للفرز) // ... // اطبع النتائج System.out.println("Sorted integers:"); for (int num : arr) { System.out.print(num + " "); } } }

هذا الكود يتيح للمستخدم إدخال أي عدد صحيح، وعند إدخال -1 يتم إيقاف البرنامج وفرز الأرقام التي أُدخلت.

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