مشغل قسمة modulo هو المشغل
mod
، ويشار إليه بالرمز %
. يقوم هذا العامل بإرجاع الباقي عندما يتم قسمة المعامل الأول على المعامل الثاني. عامل التشغيل mod
" " %
في Java لا يعمل فقط مع الأعداد الصحيحة (مثل: byte/int/short/long
)، ولكن أيضًا مع الفاصلة العائمة (مثل: float/double
) number\types. يوضح البرنامج التالي كيفية عمل هذا البيان:
package com.l2cccp.work;
public class Mod
{
public static void main(String args[])
{
int i = 17; // Integers
double d = 17.3; // floating point
System.out.println("i mod 10 = " + i % 10);
System.out.println("d mod 10 = " + d % 10);
}
}
وبتشغيل هذا البرنامج ستحصل على النتيجة التالية:
i mod 10 = 7
d mod 10 = 7.300000000000001
اكتشفنا كيف يعمل هذا المشغل، ولكن كيفية استخدامه. كخيار لتصريف الكلمات حسب الكمية. نظرًا لأنني أعمل كمطور لمحاكي ألعاب جافا، فمن المهم جدًا بالنسبة لي أن يتم تصريف العديد من الكلمات في الرسائل. على سبيل المثال:
- لقد كنت تلعب لمدة يوم واحد بالفعل .
- لقد كنت تلعب لمدة يومين بالفعل .
- لقد كنت تلعب لمدة 5 أيام بالفعل .
package com.l2cccp.work;
public class Mod
{
public static void main(String args[])
{
int[] day= new int[] { 1, 2, 5 };
System.out.println("You're already playing" + day[0] + " " + declension(day[0]));
System.out.println("You're already playing" + day[1] + " " + declension(day[1]));
System.out.println("You're already playing" + day[2] + " " + declension(day[2]));
}
public static String declension(int count)
{
String one = "day";
String two = "of the day";
String five = "days";
if(count > 100)
count %= 100;
if(count > 20)
count %= 10;
switch(count)
{
case 1:
return one;
case 2:
case 3:
case 4:
return two;
default:
return five;
}
}
}
وبتشغيل هذا البرنامج ستحصل على النتيجة التالية:
Вы играете уже 1 день
Вы играете уже 2 дня
Вы играете уже 5 дней
كل شيء يعمل كما نحتاج، ولكن ماذا لو أردنا الحصول على عدة انحرافات في نتيجة واحدة؟ على سبيل المثال:
- لقد كنت تلعب لمدة يوم وساعة واحدة .
- لقد كنت تلعب لمدة يومين و 4 ساعات .
- لقد كنت تلعب لمدة 5 أيام و 9 ساعات .
package com.l2cccp.work;
public class Mod
{
public static void main(String args[])
{
int[] day = new int[] { 1, 2, 5 };
int[] hour = new int[] { 1, 4, 9 };
System.out.println("You're already playing" + day[0] + " " + declension(day[0], "Days") + " And " + hour[0] + " " + declension(hour[0], "Hour"));
System.out.println("You're already playing" + day[1] + " " + declension(day[1], "Days") + " And " + hour[1] + " " + declension(hour[1], "Hour"));
System.out.println("You're already playing" + day[2] + " " + declension(day[2], "Days") + " And " + hour[2] + " " + declension(hour[2], "Hour"));
}
public static String declension(int count, String type)
{
String one = "";
String two = "";
String five = "";
if(type.equals("Days"))
{
one = "day";
two = "of the day";
five = "days";
}
else if(type.equals("Hour"))
{
one = "hour";
two = "hours";
five = "hours";
}
if(count > 100)
count %= 100;
if(count > 20)
count %= 10;
switch(count)
{
case 1:
return one;
case 2:
case 3:
case 4:
return two;
default:
return five;
}
}
}
وبتشغيل هذا البرنامج ستحصل على النتيجة التالية:
Вы играете уже 1 день и 1 час
Вы играете уже 2 дня и 4 часа
Вы играете уже 5 дней и 9 часов
بما أن طريقتنا موصوفة على أنها " public
" عامة، يمكنك استدعاؤها بسهولة من أي حزمة:
Mod.declension(count, type);
هذا كل شيء، وآمل أن يكون هذا مفيدا لشخص ما. حظا سعيدا في إتقان لغة جافا.
GO TO FULL VERSION