العوامل

العوامل (operators) هي رموز خاصة تستعمل للتعبير عن الحسابات البسيطة مثل الجمع والضرب. معظم العوامل في Java تفعل ما تتوقعه منها تماماً لأنها رموز رياضية شائعة. مثلاً، عامل جمع عددين هو +. عامل الطرح هو - ، وللضرب *، وللقسمة /.
1+1 hour-1 hour*60 + minute minute/60
يمكن للعبارات الحسابية أن تحتوي على أسماء متغيرات وأرقام. يتم استبدال المتغيرات بقيمها قبل إجراء الحساب.
يتم تنفيذ الجمع، الطرح والضرب تماماً كما هو متوقع، لكنك قد تفاجأ بعملية القسمة. مثلاً، البرنامج التالي:
كود:
int hour, minute;
hour = 11;
minute = 59;
System.out.print("Number of minutes since midnight: ");
System.out.println(hour*60 + minute);
System.out.print("Fraction of the hour that has passed: ");
System.out.println(minute/60);
سيولد النتيجة التالية:
Number of minutes since midnight: 719
Fraction of the hour that has passed: 0
السطر الأول يوافق ما توقعناه، لكن السطر الثاني غريب. قيمة المتغير minute هي 59، و59 مقسومة على 60 يعطي 0.98333، وليس 0. إن سبب هذا التناقض هو أن Java قامت بتنفيذ قسمة صحيحة (integer division).
عندما يكون كلا المعاملين (operands) صحيحين (المعامل هو الشيء الذي تعمل عليه العوامل)، يجب أن تكون النتيجة عدداً صحيحاً أيضاً، وبحسب تعريفها فإن القسمة الصحيحة دائماً تقرب النتائج إلى الأدنى، حتى في الحالات التي يكون الناتج فيها قريباً جداً من العدد الصحيح التالي. من الحلول البديلة في هذه الحالة هو حساب النسبة المئوية بدلاً من العدد الكسري:
كود:
System.out.println("Percentage of the hour that has passed: ");
System.out.println(minute*100/60);
النتيجة هي:
Percentage of the hour that has passed: 98
مرة أخرى، يتم تقريب النتيجة إلى العدد الأدنى، لكن على الأقل فالإجابة صحيحة تقريباً هذه المرة. للحصول على إجابة أكثر دقة، يمكننا استعمال نوع آخر من المتغيرات، يدعى متغير النقطة العائمة (floating-point)، الذي يستطيع تخزين القيم الكسرية. سنشرح ذلك في الفصل التالي.