• 0
c.power

مشلكة في مسئلة متعلقة ب (boolean data type)

سؤال

(Validating input) Write a program that reads the radius of a circle and displays its

area. Your program should validate the user input. If the input is negative, display

“Incorrect input.” Here are the sample runs of this program:

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

هادا في حالة اذا كان radius اكبر من زيرو:

Enter a radius

The area is 3.14159

اما في حالة radius اقل من زيرو البرنامج يعرض رسالة على هذا النحو:

Enter a radius: 1

Incorrect input

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


public class Test{
public static void main(String[] args) {
System.out.println("enter a radius");
Scanner input = new Scanner(System.in);
double radius = input.nextDouble();
double area = radius * radius * 3.14;
System.out.println("the area is " + area);


}
import java.util

}

تم تعديل بواسطه .S.T.A.L.K.E.R
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

20 إجابة على هذا السؤال .

  • 0

public static void main(String[] args) {
// TODO code application logic here

while(true){
System.out.println("enter radius or 0 for exit:");
Scanner s =new Scanner(System.in);
double s2 = s.nextDouble();
if(s2 == 0){
System.exit(0);
}
if(s2 < 0){
System.out.println("ERROR! please enter R again.. \n");}else{
double r = s2*s2*3.14;
System.out.println(r);
}

}


}

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

مشكور على تعبك لكن المشكلة انه اجابة السوال فقط (boolean expression )

بدون استخدام السلكشن ستاتمنت (if statement,if..else statement,nested if,switch statement,contional expression)

لا يمكن استخدام اي منهم في هذان السوال الاجابة فقط (boolean expression )

السوال موجود في كتاب

introduction to java programming 7th edition

chapter3 programmin exercise 3.1

وانا ححاول ارفق صوره للمسئلة

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

public static void main(String[] args) {
// TODO code application logic here
System.out.println("enter radius :");
Scanner s =new Scanner(System.in);
double s2 = s.nextDouble();
while(s2 <= 0){
System.out.println("enter radius :");
s =new Scanner(System.in);
s2 = s.nextDouble();
}
double r = s2*3.14;
System.out.println(r);
}



}

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا لاجابتك يا اخ java programmer

لكن لللاسف المسئلة لا تحل الا ب

boolean expression

+

simple printf method

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

 while(s2 <= 0)

وهذا أليس boolean ؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

يا اخ java programmer المشكلة تكمن انه شرط حل المسئلة بدون حتى حلقات التكرار يمكن الاطلاع على الكود اللي ارفقته في الموضوع يجب ان يكون الحل مماثل له بدون اي لوب او سيلكشن ستات مينت او نوع اخر

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ضع نص السؤال

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

لقد قمت بارفاق صورة ان شاء الله تساعد على ايجاد الاجابة

post-204719-053925000 1315654073_thumb.g

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

حسنا أخي الكريم .. في السؤال : don't use selection statements .

selection statements :

if ..

if .. else

switch..case

وليس .. collection statements

(loops)

إن كان كذالك ، وكما هو بين لي في السؤال .. فالإجابة في ردي الثاني .

وإن أبيت إلا من دون حلقات تكرار ، فهذه الإجابة ولكن من دون التحقق من مدخل المستخدم :)


public static void main(String[] args) {
// TODO code application logic here
System.out.println("enter radius :");
Scanner s =new Scanner(System.in);
double s2 = s.nextDouble();
s2 = Math.pow(s2, 2);
double r = Math.sqrt(s2)*3.14;

System.out.println(r);
}



}

تحياتي

تم تعديل بواسطه JavaPorgrammer
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

هل ال ternary operator يعتبر selection statement؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أليس أحد تعبيرات الـ if statement ؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أعرف المصطلح control flow statements.أول مرة أسمع ب selection statement، لذلك سألت smile.gif

بالنسبة لصاحب السؤال، s2 <= 0 تعتبر boolean expression، لأنها تعيد قيمة boolean، لذلك أظن أنه لا مشكل من استعمال while كما تفضل الأخ JavaPorgrammer

تم تعديل بواسطه herch
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرااااا كثيرا لك اخي java programmer

لكن هذا في حالة الراديس اكبر من او يساوي الزيرو ماذا لو ادخل اليوزر راديس اقل من الزيرو يجب ان تظهر رسالة خطا له كما هوه مبين في الصورة وشكرا مرة اخرى

على محاولتك وشكرا لللاعضاء الذين تفاعلو في الموضوع لكن المشكلة باقية لماذا

لانه حتى الان انا لم انتقل الى chapter loop

هذه المسائل تمارين خاصة boolean expression

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

والغرض تمرينك على استخدام boolean expression

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اعتقد ان ما يريده في السؤال هو المعامل الثلاثي كما ذكر الاخ herch

يعني


String ans = (radius>0)?(radius*radius*Math.Pi):"You have entered an invalid value";

مالم يمكنك محاولة التلاعب باستخدام الbitwise operators

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا يا اخ mental driller هل تقصد استخدام(conditional expression)

على هذا النحو

String ans = (radius>0)? "area is "+radius*radius*3.14:"incorrect input";

هذه الصيغه من الاوامر تسمى conditional expression

وهيه ايضا تعتبر من selection statements

ونص السوال يقول لايمكن استخدام الجمل الاختيارية طبعا المقصود كل الجمل الاختيارية switch statement ,if statement, if else statement,nested if statement,conditional expression

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شوف الكود ده مع اني متاكد انك حتقول لسه ما اخدناش الجينريكس


public static void main(String[] args) {
Scanner input = new Scanner(System.in);
double radius;
System.out.println("Enter the radius");
radius = input.nextDouble();
Map<Boolean, String> m = new HashMap<Boolean, String>();
m.put(true, "The radius is "+ radius);
m.put(false, "You have enetred a negative number");
System.out.println(m.get((radius>0)));
}

قلت ممكن تخرج منه بفكره على الاقل، ححاول في حل ثاني

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا مرة اخرى اخي mental driller لكن لو شفت نص output

في الصوره اللي انا ارفقتها حتكتشف انه في حالة الرديس اقل من زيرو المفروض يعرض رسالة "incorrect error "

هوه اللغز كله هنا

لكن المشكلة المسئلة مححدة انه لازم يكون رسالة تتعرض لليوز

في اخر رد ليك انت حططيت في الربنت اف بولينان وده حيرجع نتيجة فولس هوه مش عايز فولس هوه عايز رسالة عادية تتعرض لليوزر وفي نفس الوقت رسالة الغلط مبنية على رجع قيمة البوليان:blink:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا مرة اخرى اخي mental driller لكن لو شفت نص output

في الصوره اللي انا ارفقتها حتكتشف انه في حالة الرديس اقل من زيرو المفروض يعرض رسالة "incorrect error "

هوه اللغز كله هنا

لكن المشكلة المسئلة مححدة انه لازم يكون رسالة تتعرض لليوز

في اخر رد ليك انت حططيت في الربنت اف بولينان وده حيرجع نتيجة فولس هوه مش عايز فولس هوه عايز رسالة عادية تتعرض لليوزر وفي نفس الوقت رسالة الغلط مبنية على رجع قيمة البوليان:blink:

اولا الرسالة مش مهمة يا اخي يعني اكتب مكان الاسترينغ اللي انت تشتيه ، انا عامل invalid value وانت اكتب اللي انت عاوزه ولا عاوز احل لك المسأله كلها وبكده تبقى copy & paste

بالنسبة لخرج البرنامج من قال انه يطبع ترو او فالس هذا الخرج

شاهد الصوره جيدا يا اخي واقرا الكود

post-244925-033123100 1315765897_thumb.j

تم تعديل بواسطه mental-driller
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اعتقد ان ما يريده في السؤال هو المعامل الثلاثي كما ذكر الاخ herch

يعني


String ans = (radius>0)?(radius*radius*Math.Pi):"You have entered an invalid value";

مالم يمكنك محاولة التلاعب باستخدام الbitwise operators

نعم من الممكن استخدام bitwise operators


String[] arr = {"You have entered an invalid value", Double.toString(radius*radius*Math.PI)};
String answer = arr[- (int) Math.ceil(radius) >>> 31];

أما إذا أردت تضمين الصفر، يمكنك استخدام الآتي:


String[] arr = {Double.toString(radius*radius*Math.PI), "You have entered an invalid value"};
String answer = arr[(int) Math.ceil(radius) >>> 31];

تم تعديل بواسطه Eng.Fouad
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا اخي mental driller على محاولتك كلها

وشكرا لللاخ eng fouad

بص انا اللي توصلتله انا لازم يكون في بديل في السوال لانه في حالة الراديس ساوى الصفر او اكبر يحسب الراديس اما اذا كان اصغر لازم يعرض رسالة خطا من صياغة الموضوع لا بد من استخدام حملة اختيارية انا اتوقع انه في غلط في الموضوع لاني رجعت للكتاب وراجعته عددت مرات هوه مانع كل الجمل الاختيارية حتى المعامل الثلاثي بيعتبره من الجمل الاختيارية على العموم انا حرفق صوره بص اتوقع المسئله في غلط او الكتاب والله اعلم

post-204719-063533000 1315805767_thumb.g

post-204719-032780500 1315805832_thumb.g

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .