عملگر تقسیم مدول عملگر است
mod
که با نماد نشان داده می شود %
. این عملگر زمانی که عملوند اول بر دومی تقسیم می شود، باقیمانده را برمی گرداند. عملگر در جاوا نه تنها با اعداد mod
صحیح %
(مانند: ) بلکه با اعداد/انواع byte/int/short/long
ممیز شناور (مانند: ) کار می کند. float/double
برنامه زیر نحوه عملکرد این عبارت را نشان می دهد:
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
ما متوجه شدیم که این اپراتور چگونه کار می کند، اما چگونه از آن استفاده کنیم. به عنوان گزینه ای برای عطف کلمات بسته به کمیت. از آنجایی که من به عنوان توسعه دهنده یک شبیه ساز بازی جاوا کار می کنم، برای من بسیار مهم است که بسیاری از کلمات در پیام ها عطف شوند. به عنوان مثال:
- شما قبلاً 1 روز است که بازی می کنید .
- شما 2 روز است که بازی می کنید .
- شما 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 дней
همه چیز همانطور که ما نیاز داریم کار می کند، اما اگر در یک نتیجه نیاز به چند انحراف داشته باشیم، چه؟ به عنوان مثال:
- شما به مدت 1 روز و 1 ساعت بازی می کنید .
- شما 2 روز و 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