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

مشكلة في ال Methods

بدأه wahjed3wa في 18 ديسمبر 2008 · 3 رد · 716 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

أشكركم فالبداية على هذا المنتدى المتخصص و اسأل الله لكم التوفيق و السداد

لدي مشروع عمل برنامج يقوم بطباعة business cards, من ضمن الأشياء المطلوبة طباعة سطر يشبه التالي:

ABC***************************ABC

قمت بكتابه هذه ال method:

public String getInitials() {
		   String nameToUpper = name.toUpperCase();
		   String[] splitName = nameToUpper.split(" ");
		   for(int i =0; i < splitName.length; i++)
						 {				 
							   initials  = splitName.substring(0,1);				
							   System.out.print(initials);			  
						 }			
							   return initials;	  
		 }

وظيفة هذه المثود هي أخذ أوائل حروف اسم المستخدم و تحويلها الى upper case

ايضا استخدمت الطريقة التالية لطباعة السطر المطلوب:

 public String getOneLine()
 {						   
						   String dotstr="";
						   for(int i =0; i <=26; i++)				
						  {				  
								dotstr=dotstr + border;				
						  }				
								String line = getInitials() + dotstr + getInitials();				
								System.out.println(line);				
								return line;		 
						 }

المتغير border معرف خارج ال methods و لكن ضمن ال class كالتالي:

private char border ='*';

المشكلة الآن انه عندما اقوم بعمل object في ال main class و استخدم أحد هذه ال methods احصل على التالي:

مثلا في حالة object is a و اسم المستخدم khalid ali saeed

  a.getInitials();

احصل على

KAS

و لكن بالنسبة ل getOneLine()

a.getOneLine();

احصل على:

KASKASS***************************S

بانتظار مساعدتكم ان شاء الله

تم تعديل هذه المشاركة بواسطة wahjed3wa في 18 ديسمبر 2008 في 00:36

#2

أولا ان اردت حل مشكلة اخرى كهذه يجب أن تلجأ الى ال debug

ثانيا المشكلة بسيطة انت تطبع حرف حرف في getInitials()

وتعيد آخر حرف

جرب هذا الكود

public String getInitials() {
		String initials2="";
		String nameToUpper = name.toUpperCase();
		String[] splitName = nameToUpper.split(" ");
		for (int i = 0; i < splitName.length; i++) {
			initials = splitName.substring(0, 1);
			initials2+=initials;
		}
		return initials2;
	}

ولكن عند استخدامه استخدم هذا الكود

System.out.println(a.getInitials());

والآخر

استخدمه كما هو

الكود كامل مجرب :-

/**
 *
 * @author m0o0n
 */
public class Test {
private char border ='*';
	String name="khalid ali saeed";
	String initials;

	public String getInitials() {
		String initials2="";
		String nameToUpper = name.toUpperCase();
		String[] splitName = nameToUpper.split(" ");
		for (int i = 0; i < splitName.length; i++) {
			initials = splitName.substring(0, 1);
			initials2+=initials;
		}
		return initials2;
	}

	public String getOneLine() {
		String dotstr = "";
		for (int i = 0; i <= 26; i++) {
			dotstr = dotstr + border;
		}
		String line = getInitials() + dotstr + getInitials();
		System.out.println(line);
		return line;
	}
}

/**
 *
 * @author m0o0n
 */
public class Main {


	/**
	 * @param args the command line arguments
	 */
	public static void main(String[] args) {
		Test a = new Test();
		System.out.println(a.getInitials());
		a.getOneLine();
		System.out.println();
	}
}

NohTaDa

#3

جزيت خيرا اخي الكريم على المساعدة

#4

عدت مرة أخرى و لدي استفسار آخر

هل يوجد طريقة لتعيين طول ال tab؟

ابحث عن طريقة لطباعة السطر التالي:

*text*

يوجد مسافة (white space) بين * و كلمة text وهذا الوايت سبيس عبارة عن tab و ليس سبيس عادي

يتغير طوله بتغير طول ال text بحيث في النهاية يكون مجموع ال characters على هذا السطر 32

يعني فرضا اذا كان التاب عبارة عن نقطة يكون السطر:

*.............text.............*

او

*..........text text.........*

و لكن احتاج ان تكون المسافة بين التكست و * عبارة عن tab واحد...كيف يمكن عمل ذلك؟

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