اذهب إلى المحتوى

السؤال

نشر

ماهي وظيفه هذه الداله داخل الكلاسA؟

واين هو الخطا؟

وكيف يمكن استدعائها داخل main؟

انا لم افهم بالضبط عملها وليس كتابتها!!!

package F;

import java.io.BufferedReader;
import java.io.FileReader;

public class Arr {
public Arr(){
  System.out.print("hi");
}
public static [] load(String  ) throws IOException{

   FileReader f=new FileReader("/storage/emulated/0/JavaNIDE/B/app/src/main/java/F/arr.txt");
  
   BufferedReader in=new BufferedReader(f);
  
   int n=0;
   String line=in.readLine();
   while (line!=null){
     n++;
   line=in.readLine();
   }
   f.close();
   String []v=new String[n];
   f=new FileReader("/storage/emulated/0/JavaNIDE/B/app/src/main/java/F/arr.txt");
   in=new BufferedReader(f);
   int i=0;
   line=in.readLine();
   while ((line!=null)&&(i<n)){
     v[i]=line;
     line=in.readLine();
     i++;
   }
   f.close();
   return  v; 
  
}
}

Recommended Posts

  • 0
نشر

تقوم الدالة load بتحميل ملف نصي اسمه arr.txt من نفس المجلد الخاصة بالحزمة F.

ثم تحب عدد سطوره وتخزن الناتج في n ثم تعيد قراءة الأسطر و تخزنها في مصفوفة سلالسل نصية V => Array Of String  ثم تعيد هذه المصفوفة

public class Arr {
  public Arr(){
    System.out.print("hi");
  }
  public static String[] load(String  ) throws IOException{  // تحديد نمط إرجاع الدالة
             ^^^^^^^^^^^^^^^^
    F..

  }
  public static void main(String[] args) {
    String[] result = load(); //           استدعاء الدالة
    
    // طباعة
	for (int i = 0; i < result.length; i++){
    	System.out.println(result[i]);
    }
  }
}

 

  • تحديد نوع إعادة الدالة لتصبح مصفوفة سلاسل نصية
  • كتابة main للصنف و طباعة النتيجة فيه
  • 0
نشر (معدل)

مرحباً ,

لديك class Arr وليس A يوجد به دالة ال load والخطأ لديك يكمن بتعريفها تابع الشرح لنحل المشكلة:

سؤالك الاول :

اقتباس

ماهي وظيفه هذه الداله داخل الكلاسA؟

وظيفة الدالة:

تكمن في تنظيم الكود وفصل كل عملية تريدها في البرنامج داخل دالة منفصلة لكي تفصل عمليات البرنامج كل دالة تعمل عملها على حدا.

شرح الدالة : 

وظيفة الكود المكتوب داخل دالة ال load يقوم بقراءة ملف من المسار المعطى لل FileReader الذي هو arr.txt ,

FileReader f=new FileReader("/storage/emulated/0/JavaNIDE/B/app/src/main/java/F/arr.txt");

تم انشاء بعد ذلك object of BufferedReader واعطاء الملف لل BufferedReader لتمكين الجافا من عملية Iteration على الملف لحفظه بسلاسل:

BufferedReader in=new BufferedReader(f);

وبعد ذلك إخراجه في سلاسل نصية بواسطة انشاء object of string لكل سطر في الملف بواسطة هذا السطر:

String line=in.readLine();

ومن ثم عمل حلقة تكرارية ليقرأ كل سطر بشرط كل سطر يحتوي على نص الى ان ينتهي الملف فينتج المتغير n فيه رقم عدد السطور التي تحتوي على نص في الملف انظر لذلك:

while (line!=null){
     n++;
   line=in.readLine();
 }

بعد ذلك تم انشاء مصفوفة من String سعتها بعدد السطور في الملف n:

String []v=new String[n];

بعد ذلك تم تكرار نفس عملية القراءة من الملف ولكن هذه المرة تغير كود الحلقة التكرارية على السطور بالملف بأن يقوم الكود بإضافة كل سطر الى المصفوفة النصية التي سعتها بعدد السطور بالملف arr.txt انظر لذلك:

while ((line!=null)&&(i<n)){
     v[i]=line;
     line=in.readLine();
     i++;
   }

من ثم اغلق الملف بواسطة دالة close  :

f.close();

وتم ارجاع مصفوفة النصية التي تحتوي على السطور في الملف arr.txt:

return  v; 

سؤالك الثاني :

اقتباس

وكيف يمكن استدعائها داخل main؟

يتم استدعائها داخل ال  main تابع الكود التالي وطباعة محتوياتها واضافة try and catch بسبب ان الدالة load ممكن ان تصدر IOException :

// Main Method
public static void main(String[] args) {
       try {      
              
          String[] v = load(); // هنا تم الاستدعاء
              
          for (int i = 0; i < v.length; i++){
            	 // طباعة المحتويات
                 System.out.println(v[i]);
          } 
        } catch(Exception e) { 
        
       } 
   }

السؤال الأخير :

اقتباس

واين هو الخطا؟

الخطأ لديك بتعريف الدالة load ويجب تعريفها هكذا واستدعاء Class IOException:

import java.io.IOException; // class IOException أضف هذا السطر لإستدعاء 

public static String[] load() throws IOException{ // String[] هنا حدث الكود الخاص بك بإتباع هذا التعريف للدالة يجب ان تحدد ماذا ترجع الدالة في حالتنا 
      .
      .
      .
      return v;
}

ارجو ان تكون وضحت لك الية عمل الدالة load وكيفية استدعائها في دالة الmain تحياتي.

تم التعديل في بواسطة Haroun Taha

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...