๋ถ์ธ ๊ฐ์ ๋ฐํํ๋ ๋ฉ์๋๋ ๋๋ถ๋ถ "is"๋ผ๋ ๋จ์ด๋ก ์์ํ๋ฉฐ ํ์ธ ์ค์ธ ์์๊ฐ ํน์ ์กฐ๊ฑด๊ณผ ์ผ์นํ๋์ง ํ์ธํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ด ๋ฌธ์์์ ๋
ผ์ํ Character.isDigit() ๋ฉ์๋๋ ์ง์ ๋ char ๊ฐ์ด ์ซ์์ธ์ง ์ฌ๋ถ๋ฅผ ํ์ธ ํฉ๋๋ค .
์๋ฐ isDigit ๋ฉ์๋ ๊ตฌ๋ฌธ
java.lang.Character.isDigit(char ch)๋ โโ์ง์ ๋ ๋ฌธ์๊ฐ ์ซ์์ธ์ง ์ฌ๋ถ๋ฅผ ํ๋ณํ๋ Java์ ๋ด์ฅ ๋ฉ์๋์ ๋๋ค. Java ํ๋ก๊ทธ๋๋ฐ ์ปจํ ์คํธ์์ "์ซ์"๋ ๋ฌด์์ ์๋ฏธํฉ๋๊น? Java Doc์ ์ ์์ ๋ฐ๋ฅด๋ฉด Character.getType(ch) ๋ฉ์๋๊ฐ DECIMAL_DIGIT_NUMBER ์์๋ฅผ ๋ฐํํ๋ฉด ๋ฌธ์๋ ์ซ์์ ๋๋ค. ๋ค์์ ์ซ์๋ฅผ ํฌํจํ๋ ์ผ๋ถ ์ ๋์ฝ๋ ๋ฌธ์ ๋ฒ์์ ๋๋ค.-
'\u0030'์์ '\u0039'๊น์ง๋ ISO-LATIN-1 ์ซ์('0'์์ '9')์ ๋๋ค.
-
'\u0660'๋ถํฐ '\u0669'๊น์ง๋ ์๋ผ๋น์-์ธ๋ ์ซ์์ ๋๋ค.
-
'\u06F0'๋ถํฐ '\u06F9'๊น์ง ํ์ฅ๋ ์๋ผ๋น์-์ธ๋ ์ซ์์ ๋๋ค.
-
'\u0966'๋ถํฐ '\u096F'๊น์ง๋ ๋ฐ๋ฐ๋๊ฐ๋ฆฌ ์ซ์์ ๋๋ค.
-
\uFF10'์์ '\uFF19'๋ ์ ๊ฐ ์ซ์์ ๋๋ค.
public static boolean isDigit(char myChar)
์ฌ๊ธฐ์ myChar๋ ํ
์คํธํ ๋ฌธ์์
๋๋ค. ์ด ๋ฉ์๋๋ ๋ฌธ์๊ฐ ์ซ์์ด๋ฉด true๋ฅผ ๋ฐํํ๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด false๋ฅผ ๋ฐํํฉ๋๋ค . Java doc isDigit(char myChar) ๋ฉ์๋์ ๋ฐ๋ฅด๋ฉด ๋ณด์กฐ ๋ฌธ์๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ๋ณด์กฐ ๋ฌธ์๋ฅผ ํฌํจํ์ฌ ๋ชจ๋ ์ ๋์ฝ๋ ๋ฌธ์๋ฅผ ์ง์ํ๋ ค๋ฉด ํ๋ก๊ทธ๋๋จธ๋ isDigit(int) ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋ณด์ด์ง๋ง OOP ๋ฐ ๋คํ์ฑ ์ง์ ๋๋ถ์ ์ฝ๊ฐ ๋ค๋ฅด๊ฒ ์๋ํฉ๋๋ค. public static boolean isDigit(int codePoint)๋ ์ง์ ๋ ๋ฌธ์(์ ๋์ฝ๋ ์ฝ๋ ํฌ์ธํธ)๊ฐ ์ซ์์ธ์ง ํ์ธํฉ๋๋ค. ๋ฌธ์ ์ธ์ฝ๋ฉ ์ฉ์ด์์ ์ฝ๋ ํฌ์ธํธ ๋๋ ์ฝ๋ ์์น๋ ํน์ ๋ฌธ์์ ํด๋นํ๋ ์ซ์ ๊ฐ์
๋๋ค.isDigit(int codePoint) ๋ ๋ฌธ์๊ฐ ์ซ์์ด๋ฉด true๋ฅผ ๋ฐํํ๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด false๋ฅผ ๋ฐํํฉ๋๋ค .
Java isDigit ๋ฉ์๋ ๊ฐ๋จํ ์์
Java Characher.isDigit() ๋ฉ์๋ ๋ก ์์ ํด ๋ด ์๋ค . ๋จผ์ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๊ธฐ ์ํด ๊ฐ๋จํ ํ๋ก๊ทธ๋จ์ ์์ฑํ ๊ฒ์ ๋๋ค.
public class isDigitTest {
//isDigit(char ch) simple example
public static void main(String[] args)
{
//characters to check using isDigit Java method
char myChar1 = '5', myChar2 = 'u', myChar3 = '0';
// Function to check if the character
// is digit or not, using isDigit() method
System.out.println("is char " + myChar1 + " a digit? "
+ Character.isDigit(myChar1));
System.out.println(
"is char " + myChar2 + " a digit? "
+ Character.isDigit(myChar2));
System.out.println(
"is char " + myChar3 + " a digit? "
+ Character.isDigit(myChar3));
}
}
์ถ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ฌธ์ 5๋ ์ซ์์
๋๊น? true๋ char ua ์ซ์์
๋๊น? false๋ char ua ์ซ์์
๋๊น? ์ง์ค
Java isDigit ๋ฉ์๋, ์กฐ๊ธ ๋ ๋ณต์กํ ์์
Character.isDigit()์ ์ฌ์ฉํด ๋ด ์๋ค.๋ ํฅ๋ฏธ๋กญ๊ณ ์ค์ ์ ์ธ ๋ฌธ์ ์์. Run Length Encoding ๋๋ ์ค์ฌ์ RLE๋ผ๋ ์์ถ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. Run Length Encoding์ ๋ฐ๋ณต๋๋ ๋ฌธ์(์๋ฆฌ์ฆ)๋ฅผ ํ๋์ ๋ฌธ์์ ๊ทธ ๋ฐ๋ณต ํ์๋ก ๋์ฒดํ๋ ๋ฐ์ดํฐ ์์ถ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ์๋ฆฌ์ฆ๋ ์ฌ๋ฌ ๊ฐ์ ๋์ผํ ๋ฌธ์๋ก ๊ตฌ์ฑ๋ ์ํ์ค์ ๋๋ค. ์ธ์ฝ๋ฉ(์์ถ, ์์ถ)ํ ๋ ์๋ฆฌ์ฆ๋ฅผ ๊ตฌ์ฑํ๋ ๋์ผํ ๋ฌธ์์ ๋ฌธ์์ด์ ๋ฐ๋ณต ๋ฌธ์ ์์ฒด์ ๋ฐ๋ณต ํ์๋ฅผ ํฌํจํ๋ ๋ฌธ์์ด๋ก ๋์ฒด๋ฉ๋๋ค. ๋ฐ๋ผ์ "hhhhhorrribleeee" ๋ฌธ์์ด์ด ์๋ ๊ฒฝ์ฐ ์คํ ๊ธธ์ด ์ธ์ฝ๋ฉ์ h5or3ible5๋ผ๋ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ฌธ์์ด์ ํด๋ ํ๋ค๋ฉด ์ซ์์ธ์ง ๋น์ซ์์ธ์ง ์์ฐจ์ ์ผ๋ก ํ์ธํด์ผ ํ๊ณ , ์ซ์๊ฐ ์์ผ๋ฉด ๊ทธ ์ซ์๊ฐ ๋ฌด์์ธ์ง ์์๋ผ ์ฐจ๋ก๋ค. ๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ์ฌ๋ฌ๋ถ์ ๋ชจ๋ JPEG ํ์ผ์ ์๊ณ ์์ต๋๋ค. ์ด ํ์์ ์์ํ๋ ๋ฐ์ดํฐ์ ๋ํด ๋๊ฐ์ ํจํด์ผ๋ก ์คํ ๊ธธ์ด ์ธ์ฝ๋ฉ์ ๋ณํ์ ์ฌ์ฉํฉ๋๋ค. ๋ณํ์ 0 ๊ฐ์ ์คํ ๊ธธ์ด๋ง ์ธ์ฝ๋ฉ๋๊ณ ๋ค๋ฅธ ๋ชจ๋ ๊ฐ์ ์์ฒด์ ์ผ๋ก ์ธ์ฝ๋ฉ๋๋ค๋ ๊ฒ์ ๋๋ค. ์๋ ์์์๋ ๋ค์์ ์ฌ์ฉํฉ๋๋ค.Run-length ์ธ์ฝ๋ฉ์ผ๋ก ์ธ์ฝ๋ฉ๋ ๋ฌธ์์ด์ ๋์ฝ๋ฉํ๋ Character.isDigit(char ch) ๋ฉ์๋. ๊ด์ฌ์ด ์๋ค๋ฉด ํ๋ก๊ทธ๋จ์ ์์ฑํ๊ฑฐ๋ ์ฒซ ๋ฒ์งธ ๋ถ๋ถ์ ๋ง๋ค๊ณ ๋ฌธ์์ด์ RLE๋ก ์ธ์ฝ๋ฉํ๊ณ ํ์ผ์์ ๋ฌธ์์ด์ ์ฝ๋ ๋ฐฉ๋ฒ์ ์์ฑํ์ญ์์ค. ๋๋ ์ ๋ ฅ์ ์ ํ์ฑ์ ํ์ธํ๋ฉด์ ์ฝ์์์ ๋ฌธ์์ด์ ์๋์ผ๋ก ์ ๋ ฅํฉ๋๋ค. ๋ค์์ RLE ๋์ฝ๋ฉ์ ์์ ๋๋ค.
public class RleTest {
//the method to decode String using run-length encoding and
//isDigit() method
private static String decodeRle(String encoded) {
if (encoded.isBlank()) return "";
StringBuilder result = new StringBuilder();
int count = 0;
char baseChar = encoded.charAt(0);
for (int i = 1; i <= encoded.length(); i++) {
char c = i == encoded.length() ? '$' : encoded.charAt(i);
//checking using isDigit() method
if (Character.isDigit(c)) {
count = count * 10 + Character.digit(c, 10);
} else {
do {
result.append(baseChar);
count--;
} while (count > 0);
count = 0;
baseChar = c;
}
}
return result.toString();
}
public static void main(String[] args) {
//here we are going to decode an RLE-encoded string
System.out.println(decodeRle("C3ecddf8"));
}
}
์ถ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
CCCecddffffffff
์ฐ๋ฆฌ๊ฐ String ์ด ์๋๋ผ StringBuilder ๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๋ ๊ฒ์ ๋์น์ฑ์
จ์ ๊ฒ์
๋๋ค . ์? ์ฌ์ค String ์ ๋ณ๊ฒฝํ ์ ์์ผ๋ฉฐ ์นด์ดํฐ๋ฅผ ์ฆ๊ฐ์ํค๊ณ ์ ๋ฌธ์์ด์ด ์์ฑ๋ ๋๋ง๋ค ์ฆ๊ฐํฉ๋๋ค. ํ๋ก๊ทธ๋จ์์ Character.digit ๋ฉ์๋ ๋ ์ฌ์ฉํ์ต๋๋ค . java.lang.Character.digit()๋ ์ง์ ๋ ์ ์ฒด๊ณ์์ ๋ฌธ์ ch ์ ์ซ์ ๊ฐ์ ๋ฐํํ๋ ๋ฉ์๋์
๋๋ค . ๊ธฐ์ค์ด MIN_RADIX <= ๊ธฐ์ค <= MAX_RADIX ๋ฒ์์ ์์ง ์๊ฑฐ๋ ch๊ฐ ์ง์ ๋ ๊ธฐ์ค์์ ์ ํจํ ์ซ์๊ฐ ์๋ ๊ฒฝ์ฐ ๋ฉ์๋๋ -1์ ๋ฐํํฉ๋๋ค.
GO TO FULL VERSION