الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ربط ال Method من Class ب Array

مغلق
بدأه ail_fahad777 في 6 يناير 2008 · 4 رد · 1,033 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

أخواني وأخواتي الأعضاء أنا واجهت مشكلة في أستدعاء Method من Class في الـ Main

إنظروا إلى كود الـ Class

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Storage {

	// Instance Variables
	private int ID_item;			// ID number of item
	private int Num_item;			// Number of items
	private String Name_item;		// Name of item
	private double Price_item;		// Price the item
	private int numberUsed;

	Storage[] list = new Storage[50];

	// Constructors
	public Storage(int ID_item, String Name_item, int Num_item, double Price_item) {
		this.ID_item = ID_item;
		this.Num_item = Num_item;
		this.Name_item = Name_item;
		this.Price_item = Price_item;
	}

	// To read data from file ["input.txt"]
	public void ReadData() {
		 Scanner input = null;
		try {
			input = new Scanner (new File("input.txt"));
		}
		catch(FileNotFoundException e) {
			System.out.println("1. The file [input.txt] was not found");
			System.exit(0);
		}
		while (input.hasNextLine()) {
			for (int i = 0; i < list.length; ++i) {
				// Checking if the item ID already exists or not
				if(list.ID_item != input.nextInt()) {
					// Store data form file ["input.txt"] to an array
					list = new Storage(input.nextInt(), input.next(), input.nextInt(), input.nextDouble());
					numberUsed++;
				}else {
					System.out.println("[This item name] has a duplicate ID as [Name]");
				}
			}
		}
		// Close ["input.txt"] after reading
		input.close();
	}

وبالنسبة للكود في الـ Main

	public static void main(String[] args) {
		int choice;  
								Scanner kb = new Scanner(System.in);	  
						Storage[] list = new Storage[50];
		do {		
			System.out.println("1. Read data from [input.txt]");
			System.out.println("2. Quit");
			System.out.println("");
			System.out.println("");
			System.out.print("Enter The Choise [1 Or 2] : ");


			do {

				choice = kb.nextInt();
				if(choice < 1 || choice >2)
					System.out.print("Invalid Choice! Enter the choice again : ");
			}while (choice < 1 || choice > 2);

			switch(choice) {
				case 1:
					list.ReadData();	 //هنا يقع الخطأ ولا أعرف كيف أربط الميثود بالمصفوفة
					break;
				case 2:
																	System.out.println();
					System.out.println("Thank you For using The program");	
				}
		}while(choice != 6);
		System.out.println("Thank you For using The program");
	}

ارجوا التكرم منكم ومساعدتي في إيجاد الحل المناسب للكود

ودمتم سالمين

#2

لو سمحتوا هل ReadData صحيحة أم بها أخطاء

أنا أود أنا أقرأ بيانات ملف input.txt وأخزنها في Array

أتمنى المساعدة :)

تحياتي لكم

#3

السلام عليكم

اخي المشكل ان list عباره عن مصفوفه وليست من نوع Storage هي من نوع Array of Storage

فلذلك حدد اي عنصر من المصفوفه تريد ان تقرأ البيانات منه لو كان العنصر الاول فتكون list[0].ReadData وهكذا

آسف على التأخير

#4

السلام عليكم ورحمة الله وبركاته

جزاكم الله كل خير

أخواني أود أن أقرأ المعلومات من الملف input.txt وأحفظ المعلومات في مصفوفة

حيث الملف input.txt يحتوي على ID و Name و و و . . إلخ

فهل طريقتي صحيحة في قراءة الملف وتخزين الملعومات في المصفوفة

وكيف أستدعي الـ Method الخاصة بقراءة الملف للمصفوفة كاملة بدون تحديد الـ index للمصفوفة

أنا حاولت أستخدم هذه الطريقة

Storage[] list = new Storage[50];

for(int i =0; i < list.length; i++){
	list.ReadData();
}

طبعـًا واضعهم في الـ main

علمـًا بأني قمت بتعريف مصفوفة أخرى في الـ class Storage لكي يتم التعامل معها في ReadData Method

ونتج هذا الخطأ

Exception in thread "main" java.lang.NullPointerException
	at MenuDriven.main(MenuDriven.java:42)

أتمنى أن يكون مقصدي واضح

وجزاكم الله عنا كل خير

تحياتي لكم

تم تعديل هذه المشاركة بواسطة ail_fahad777 في 7 يناير 2008 في 19:25

#5

حقيقة انا مشغول بالعمل ولايمكنني تتبع كل شئ

ولكن اخي الكريم استخدم أي هيكلة بيانات غير المصفوفه

مثل ArrayList or Vector بهذا تتجنب تحديد العدد ..

ولمعرفة هل انتهت البيانات ام لا بامكانك وضع علامه مثل -1 في آخر الملف لتدلك على انه لايوجد بيانات بعد هذا الحد

استخدم BufferedReader $ BufferedWriter لأن مثداتها واضحه وتسهلك الكثير

هناك موضوع اسمه نظره على I/O تجده في المواضيع المثبته سيفيدك باذن الله

لاتتردد بطرح سؤالك بعد محاولتك

هذا الموضوع مغلق.

مواضيع مشابهة