JavaRush /בלוג Java /Random-HE /מפעיל חטיבת מודולו
L2CCCP
רָמָה

מפעיל חטיבת מודולו

פורסם בקבוצה
אופרטור חלוקת המודולו הוא האופרטור mod, מסומן בסמל %. מפעיל חטיבת מודולו - 1אופרטור זה מחזיר את היתרה כאשר האופרנד הראשון מחולק בשני. האופרטור mod" " %ב-Java עובד לא רק עם מספר שלם (כגון: 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. אתה משחק כבר יומיים .
  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. אתה משחק כבר יום ושעה .
  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);
זה הכל, אני מקווה שזה יהיה שימושי למישהו. בהצלחה בשליטה בשפת Java.
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION