JavaRush /وبلاگ جاوا /Random-FA /اپراتور تقسیم ماژول
L2CCCP
مرحله

اپراتور تقسیم ماژول

در گروه منتشر شد
عملگر تقسیم مدول عملگر است modکه با نماد نشان داده می شود %. اپراتور تقسیم ماژول - 1این عملگر زمانی که عملوند اول بر دومی تقسیم می شود، باقیمانده را برمی گرداند. عملگر در جاوا نه تنها با اعداد 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. شما قبلاً 1 روز است که بازی می کنید .
  2. شما 2 روز است که بازی می کنید .
  3. شما 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 روز و 1 ساعت بازی می کنید .
  2. شما 2 روز و 4 ساعت است که بازی می کنید .
  3. شما به مدت 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);
این همه است، امیدوارم برای کسی مفید باشد. در تسلط بر زبان جاوا موفق باشید.
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION