السلام عليكم و رحمة الله و بركاتة
مرحبا اخواني انا مازلت مبتداء في لغة البرمجة java و عندي مشكلة بسيطة !
في كورس الجافا الذي اقوم بدراستة طلب مننا عمل برنامج بسيط !
و هو عبار عن ماركت يحتاج عدد من الموظفين في مجالات مختلفة و برواتب و اعمار مختلفة فقمت بكتابة هذا الكود اريد رائيكم و تصحيح للخطا و ما سببة
وشكرا مقدما..
public class Market_Box {
static Scanner scan= new Scanner(System.in);
// اعداد الموظفين المطلوبين
private static byte Dev= 2;
private static byte Designer= 3;
private static byte Seller= 5;
// الاعمار المطلوبة
private static final byte age_Dev= 40;
private static final byte age_Designer= 30;
private static final byte age_Seller= 25;
// مرتبات الموظفين
private static final float us_brays_Devloper= 2600f;
private static final float us_brays_Designer= 2200f;
private static final float us_brays_Seller= 1800f;
private static byte Job_age; // متغير العمر
private static float Job_Breas; // متغير الراتب المطلوب
private static String Job_spec; // متغير الوظيفة
private static String Job_Name; // متغير الاسم
// دالة سوال المتقدم للوظيفة
public static void name(){
System.out.print("What you name ? ");
Job_Name = scan.nextLine().toUpperCase();
System.out.print("what is your specialty ? ");
Job_spec = scan.nextLine().toUpperCase();
System.out.print("What you age ? ");
Job_age = scan.nextByte();
System.out.print("What you Job Brays ? ");
Job_Breas = scan.nextFloat();
}
public static void Inter_Veiow(){
// اريد هنا اذا لم تكن وظيفتة موجودة نشكرة
// و هنا المشكلة
if(Job_spec != "DEVLOPER" || Job_spec != "DESIGNER" || Job_spec != "SELLER"){ // المشكلة انة ينفذ في اي حال من الاحوال
System.out.println("Sorry Mr "+ Job_Name +" No Jobs You !");
return;
}
if(age_Designer < Job_age || age_Dev < Job_age || age_Seller < Job_age){
System.out.println("Sorry Age old Mr "+ Job_Name );
return;
}
if(Job_spec == "DEVLOPER" && us_brays_Devloper >= Job_Breas){
if (Dev== 0)
return;
System.out.println("Hello Mr"+Job_Name+"You Devloper on Market");
Dev--;
return;
}
else if(Job_spec == "DESAIN" && us_brays_Designer >= Job_Breas){
if (Designer== 0)
return;
System.out.println("Hello Mr "+Job_Name+" You Desain on Market");
Designer--;
return;
}
else if(Job_spec == "SEAL" && us_brays_Seller >= Job_Breas){
if (Seller== 0)
return;
System.out.println("Hello Mr "+Job_Name+" You Seal on Market");
Seller--;
return;
}
else{
System.out.println("Sory Breas You Volum");
return;
}
}
public static void list(){ // طباعة عدد الوظائف المتبقية
System.out.println("######################################################");
System.out.println("Devloper Jobs : "+Dev);
System.out.println("Designer Jobs : "+Designer);
System.out.println("Seller Jobs : "+Seller);
}
}
التعليقات
الخطأ الذي وقعت فيه هو خطأ شائع عند مبرمجي جافا المبتدئين. لا تقارن بين اثنين من نوع String بالعلامة == (المقارنة هنا تعني ما إذا كان الاثنان يشيران لنفس الكائن في الذاكرة أم لا، ولا يتم مقارنة قيمتهما)، ولكن قارن بينهما بالدالة ()equals أو ()equalsIgnoreCase إذا أردت تجاهل حالة الأحرف كانت كبيرةً أم صغيرةً. لذلك أول شرط من المفترض أن يكون هكذا:
if (!Job_spec.equalsIgnoreCase("DEVLOPER") && !Job_spec.equalsIgnoreCase("DESIGNER") && !Job_spec.equalsIgnoreCase("SELLER"))
أيضاً، ما الفائدة من هذا الشرط؟ يبدو لي أنه خطأ!
if (age_Designer < Job_age || age_Dev < Job_age || age_Seller < Job_age)
شكرا لمشاركتك اخي .
اخي الفكرة هنا انة اذا انطبقت الشروط علي المتقدم للوظيفة نبحث اذا كان لايزال هناك اصلا وظائف ام لا
فالريترن return الاول خاص بي if المختصة بي عدد الموظفين
و الثانية انة اذا ما كانت هناك وظائف متبقية نرحب بة ثما ننهي البرنامج .
ومشكلتي اخي انها مهما اعطينة قيم خاصة بنوع الوظيفة لا يتحقق منها ابدا او يعتبرها اصلا غير موجودة لا اعلم ماذا يحدث وهذة هيا مشكلتي .
ارجو انشاء الله ان اكون قد فهمت سوالك
اخي && تعني and و استخدامها هنا خطا لانة يجب ان يحتوي المتغير Job_spec علي قيمة واحدة فقط (اي الثلاث وظائف)
شكرا لمشاركتك اخي .
أنت بهذا الشرط تريد أن تتحقق من تخصص المتقدم للوظيفة ليس ضمن التخصصات المطلوبة للوظيفة
}
("if(Job_spec != "DEVLOPER" || Job_spec != "DESIGNER" || Job_spec != "SELLER
{
و شرطك هنا يقرأ إذا كان تخصص المتقدم Job_spec مختلف عن "DEVLOPER" أو مختلف عن"DESIGNER" أو مختلف عن "SELLER" فنفذ الشرط
و الأصح هو إذا كان تخصص المتقدم Job_spec مختلف عن "DEVLOPER" و مختلف عن"DESIGNER" و مختلف عن "SELLER" فنفذ الشرط
إذن عليك تغيير || ب &&
اخي ! اسمح لي ان اوضج لك عمل && و ||
علي سبيلا المثال اذا قلنا
if(2+2==5 || 2+2==7|| 2+2==4)
و ايضا هذا :
if(2+2==5 && 2+2==7 && 2+2==4)
ايهما سوف ينفذ طبعا الاول !
لان && تعني اذا كانت الثلاث شروط صحيحة بمعني اذا كان 2+2=5 و ايضا 2+2=7 و ايضا 2+2=4 طبعا اخي هذا مستحيل .
لكن || تعني (او) بمعني اذا اكنت 2+2=5 او 2+2=7 او 2+2=4
وهذا ما يجعل الشرط الاول يعمل علي عكس الثاني .
ارجو انشاء الله ان اكون قد وضحتها لك اخي
وشكرا لك ^_^
لكن شرطك سينفذ مهما كانت قيمة Job_spec
if(Job_spec != "DEVLOPER" || Job_spec != "DESIGNER" || Job_spec != "SELLER")
إعطيني على الأقل حالة واحدة لن ينفذ فيها الشرط (مستحيل ) لهذا شرطك سينفذ في كل الأحوال