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

السؤال

نشر
int intNum = (int)(Math.random()*100);
        Scanner input = new Scanner(System.in);
        System.out.println("Is the number "+intNum+" a prime number ?");
        String answer=input.next();
    if (intNum % 2==0||intNum %3==0 ||intNum % 5==0||intNum % 7==0){
    
    if(answer=="NOT"){
     System.out.println("correct");
    }
    else {
     System.out.println(" not correct");   
     }
        }
    else {
        if(answer=="YES"){
    System.out.println("correct");
    }
    else {
     System.out.println("not correct"); 
        }
       }

المطلوب كتابة برنامج جافا لممارسة الأعداد الأولية بين 0 و 99.
 • يُنشئ البرنامج عشوائيًا عددًا صحيحًا بين 0 و 99 مخزنًا حيث يعرض intNum سؤالًا يسأل المستخدم "هل الرقم ... رقم أولي؟  ".  يجب على المستخدم الإجابة بـ "نعم" أو "لا".
 • بعد أن يكتب المستخدم الإجابة ، يعرض البرنامج رسالة توضح ما إذا كانت الإجابة صحيحة أم غير صحيحة.

قمت بكتابة هذا الكود وأريد التأكد من صحته وهل يوجد تعديلات عليه ؟

Recommended Posts

  • 0
نشر

الكود غير صحيح، حيث أنه دائماً سيعيد not correct، السبب في ذلك أنك استعملت المعامل == لمقارنة السلسلة المدخلة مع السلسلة التي تريدها.

إن المعامل == يقارن الأغراض و بالتالي سيعيد دائماً false حيث أن الغرض المدخل ليس نفسه الغرض "NOT" مثلاً و لو كان لهما نفس القيمة.

لمقارنة تساوي المحتوى لسلسلتين استعمل ما يلي:

if (answer.equals("NOT"))

عندها سيصبح برنامجك صحيح (بالطبع يجب عليك القيام بذلك في كلا الشرطين).

بالإضافة إلى ذلك يجب عليك إخبار المستخدم بما عليه إدخاله، حيث أنه لن يعرف، مثلاً قد يدخل no بدل not، فأخبره أن يجب ب NOT أو YES.

  • 0
نشر
 int intNum = (int)(Math.random()*100);
        Scanner input = new Scanner(System.in);
        System.out.println("Is the number "+intNum+" a prime number ?");
        System.out.println("answer with Yes or Not");
        String answer=input.next();
    if (intNum % 2==0||intNum %3==0 ||intNum % 5==0||intNum % 7==0){
    
    if(answer.equals("Not")){
     System.out.println("correct");
    }
    else {
     System.out.println("not correct");   
     }
        }
    else {
        if(answer.equals("Yes")){
    System.out.println("correct");
    }
    else {
     System.out.println("not correct"); 
        }

هل يصبح الكود هكذا ؟ 

وهل هناك طريقة أخرى أبسط من if (answer.equals("NOT")) ؟

  • 0
نشر
بتاريخ 45 دقائق مضت قال Rol Ian:

 int intNum = (int)(Math.random()*100);
        Scanner input = new Scanner(System.in);
        System.out.println("Is the number "+intNum+" a prime number ?");
        System.out.println("answer with Yes or Not");
        String answer=input.next();
    if (intNum % 2==0||intNum %3==0 ||intNum % 5==0||intNum % 7==0){
    
    if(answer.equals("Not")){
     System.out.println("correct");
    }
    else {
     System.out.println("not correct");   
     }
        }
    else {
        if(answer.equals("Yes")){
    System.out.println("correct");
    }
    else {
     System.out.println("not correct"); 
        }

هل يصبح الكود هكذا ؟ 

وهل هناك طريقة أخرى أبسط من if (answer.equals("NOT")) ؟

نعم هكذا تتم المقارنة.

هذه أبسط طريقة على حد علمي، يمكنك أيضاً استعمال equalsIgnoreCase بدلاً من equals هذا يساعدك على المقارنة بغض النظر عن حالة الأحرف، بشكل عام هذه الخاصية مطلوبة.

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...