البرمجة

حل مشكلة حساب السعر في برنامج الشراء الإلكتروني

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

أولاً، دعني أشير إلى أنه عندما تقوم بتعيين nChoices إلى القيمة المرتبطة بالخيار المحدد، فإنك في الواقع تغير قيمة nChoices التي تستخدمها للتحكم في حلقة while. لكن الأفضل هو استخدام متغير آخر لتخزين القيمة المختارة وترك nChoices للتحكم في دورة while فقط.

ثانيًا، يبدو أن هناك خطأ في موضع قيامك بإضافة nChoices إلى nSum خارج حلقة الـ while، الأفضل هو نقل السطر nSum = nSum + nChoices; داخل حلقة while لتأكيد أن القيمة المحسوبة بشكل صحيح بعد كل تحديد للعنصر.

ثالثًا، يجب أن تتحقق من المنطق الذي تقوم به لتعيين قيمة nChoices الجديدة. لحسن الحظ، يبدو أن المنطق صحيح ولكن يمكنك تحسينه باستخدام هيكل تحكم switch-case بدلاً من سلسلة if-else if.

لذلك، إليك نسخة معدلة من الشيفرة:

java
import java.util.Scanner; public class OnlinePurchases { public static void main(String[] args) { String sName = ""; int nChoices = 0; int nSum = 0; final int SENTINEL = 10; int nCount = 0; Scanner input = new Scanner(System.in); System.out.print("Please enter your name: "); sName = input.nextLine(); System.out.println("BEST PURCHASE PRODUCTS\n"); System.out.println("1. Smartphone $249"); System.out.println("2. Smartphone case $39"); System.out.println("3. PC Laptop $1149 "); System.out.println("4. Tablet $349"); System.out.println("5. Tablet case $49"); System.out.println("6. eReader $119"); System.out.println("7. PC Desktop $899"); System.out.println("8. LED Monitor $299" ); System.out.println("9. Laser Printer $399" ); System.out.println("10. Complete my order\n"); while(nChoices != SENTINEL) { System.out.print("Please select an item from the menu above: "); nChoices = input.nextInt(); switch(nChoices) { case 1: nSum += 249; break; case 2: nSum += 39; break; case 3: nSum += 1149; break; case 4: nSum += 349; break; case 5: nSum += 49; break; case 6: nSum += 119; break; case 7: nSum += 899; break; case 8: nSum += 299; break; case 9: nSum += 399; break; case 10: break; // Complete order, exit loop default: System.out.println("Invalid choice. Please select again."); } if(nChoices != SENTINEL && nChoices != 10) { nCount++; } } System.out.println("Price of Items Ordered: $" + nSum); System.out.println("Total Items Ordered: " + nCount); } }

هذه النسخة المعدلة من الشيفرة يجب أن تساعدك على حل مشكلتك بنجاح.

المزيد من المعلومات

بالطبع، سأكمل المقال بمزيد من التوضيح والتفسير.

بعد تعديل الشيفرة، يجب أن يعمل البرنامج الآن بشكل صحيح. لكن دعنا نفحص الآن التغييرات التي تم إجراؤها:

أولاً وقبل كل شيء، قمت بتغيير منطق تعيين قيمة nChoices داخل الحلقة لتخزين قيمة العنصر المحدد في متغير آخر بدلاً من تغيير قيمة nChoices نفسها. هذا يسمح لنا بالاحتفاظ بقيمة الخيار المحدد في المتغير الجديد بينما نستخدم nChoices للتحكم في حلقة while.

ثانيًا، قمت باستخدام هيكل التحكم switch-case بدلاً من سلسلة if-else if. هذا لا يزيد فقط من وضوح الشيفرة، بل يجعلها أيضًا أكثر كفاءة من الناحية العملية. في هذه الحالة، يمكننا التحقق من القيمة المحددة مرة واحدة فقط وتحديد الإجراء الصحيح بناءً على ذلك.

وأخيرًا، قمت بتصحيح مكان إضافة nChoices إلى nSum داخل حلقة while. هذا يضمن أن تتم إضافة قيمة العنصر المحدد بشكل صحيح في كل دورة من الحلقة.

بعد تنفيذ هذه التغييرات، يجب أن يعمل برنامجك بشكل صحيح الآن، ويقوم بحساب إجمالي السعر وعدد العناصر بشكل دقيق.

لا تتردد في تجربة الشيفرة المعدلة والتأكد من أنها تلبي احتياجاتك بشكل صحيح. وإذا كنت بحاجة إلى أي مساعدة إضافية أو توضيحات، فلا تتردد في طرح الأسئلة.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

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