אופרטור חלוקת המודולו הוא האופרטור
mod
, מסומן בסמל %
. אופרטור זה מחזיר את היתרה כאשר האופרנד הראשון מחולק בשני. האופרטור 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
הבנו איך המפעיל הזה עובד, אבל איך להשתמש בו. כאופציה להטיית מילים בהתאם לכמות. מכיוון שאני עובד כמפתח אמולטור משחק ג'אווה, חשוב לי מאוד שמילים רבות בהודעות יהיו מוטות. לְמָשָׁל:
- אתה משחק כבר יום אחד .
- אתה משחק כבר יומיים .
- אתה משחק כבר 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);
זה הכל, אני מקווה שזה יהיה שימושי למישהו. בהצלחה בשליטה בשפת Java.
GO TO FULL VERSION