تصحيح خطاء بسيط في كود بسيط

ahmed317

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

مرحبا اخواني انا مازلت مبتداء في لغة البرمجة 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);
    }

}


التعليق السابق

اخي && تعني 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")

إعطيني على الأقل حالة واحدة لن ينفذ فيها الشرط (مستحيل ) لهذا شرطك سينفذ في كل الأحوال

اخي من المفترض ان ينفذ شرطي اذا كان اي شي غير الثلاث وظائف السابقة علي سبيل المثال اذا كان "beggar" فيجب ان ينفذ الشرط 

اليس كلامي صحيح .

لكن المشكلة انة مهما اعطيناه قيم مختلفة عن ما سبق ينفذ الكود و هذة هيا مشكلتي التي اريد حلن لها .