[Java] 12μΌμ°¨ : μλ°μ κΈ°λ³Έ API ν΄λμ€ 5
Math
ν΄λμ€λ μν(Mathematics)κ³Ό κ΄λ ¨λ λ©μλλ₯Ό μ 곡νλ ν΄λμ€λ‘ μμ±μκ° μμ§λ§ private μΌλ‘ μ μΈλμ΄ μΈλΆμμ κ°μ²΄λ₯Ό μμ±ν μ μλ€. λͺ¨λ λ©μλκ° staicμΌλ‘ μ μΈλμ΄ μμΌλ―λ‘ κ°μ²΄λ₯Ό μ μΈνμ§ μκ³ λ°λ‘ μ¬μ© κ°λ₯νλ€.
package ch07.unit06;
public class Ex01_Math {
public static void main(String[] args) {
double a;
System.out.println(Math.PI);
a = Math.sin(30 * Math.PI / 180); // PIμμ£Όμ¨
System.out.println(a);
System.out.println(Math.sqrt(2)); // μ κ³±κ·Ό
System.out.println(Math.floor(12.77)); // μ μ 12.0
System.out.println(Math.floor(-12.77)); // μ μ -13.0
a = Math.pow(2, 10); // 2μ 10μΉ
System.out.println(a);
a = Math.random(); // 0~ <1 λμ
System.out.println(a);
}
}
Random
μ¬λ¬ ννμ λμλ₯Ό μ 곡νλ ν΄λμ€. Math ν΄λμ€μ μ μ λ©μλμΈ random()λ λμλ₯Ό μ 곡νλ λ©μλ μ΄μ§λ§ 0..~1.0μ¬μ΄μ μ€μλ§ λ°μνλ―λ‘ νμν μ¬λ¬ ννμ λμλ₯Ό λ§λ€λ €λ©΄ μ°μ°μ νμλ‘ νλ€. κ·Έλμ μλ°λ μ¬λ¬ ννμ λμλ₯Ό λ°μμμΌμ£Όλ Random ν΄λμ€λ₯Ό μ 곡νλ€.
package ch07.unit06;
import java.util.Random;
public class Ex02 {
public static void main(String[] args) {
// Random : μ¬λ¬ ννμ λμ λ°μ
Random rnd = new Random ();
int n;
for(int i =1;i<=100;i++) {
n=rnd.nextInt(100); // 0~99 μ¬μ΄ λμ
System.out.printf("%5d",n);
if(i%10==0) {
System.out.println();
}
}
}
}
package ch07.unit06;
import java.util.Random;
public class EX03 { // 5μ리 λμ λ°μνκΈ°
public static void main(String[] args) {
System.out.println(toNumber5());
System.out.println(toNumber3());
}
public static String toNumber5() {
String s = null;
Random rnd = new Random();
s = String.format("%05d",rnd.nextInt(100000));
return s;
}
// 1~9 μλ₯Ό μ΄μ©νμ¬ μλ‘ λ€λ₯Έ 3μ리 λμ (123~987)
public static String toNumber3(){
StringBuilder sb = new StringBuilder( );
Random rnd = new Random();
String n;
for(int i=0; i<3; i++) {
n= Integer.toString(rnd.nextInt(9)+1);
if(sb.indexOf(n)>=0) {
i--;
continue;
}
sb.append(n);
}
return sb.toString();
}
}
βΆ μ€λ¬΄κ³ κ° (λμ λ§μΆκΈ°)
package ch07.unit06;
import java.util.Random;
import java.util.Scanner;
public class Ex04_01 {
public static void main(String[] args) {
// μ€λ¬΄κ³ κ° : 1~100 μ¬μ΄μ λμλ₯Ό λ°μ λ§μΆκΈ°
Scanner sc = new Scanner(System.in);
Random rnd = new Random();
int input;
int count = 0;
int com = rnd.nextInt(100) + 1;
System.out.println("μ€λ¬΄κ³ κ° νλ‘κ·Έλλ°...");
do {
System.out.println("input ?");
input = sc.nextInt();
if (com > input) {
System.out.printf("%d 보λ€λ ν°μμ
λλ€.\n", input);
} else if (com < input) {
System.out.printf("%d λ³΄λ€ μμμμ
λλ€.\n", input);
}
count++;
} while (input != com && count < 20);
System.out.println("λμ:" + com);
{
}
if (input == com) {
System.out.println("count : " + count);
} else {
System.out.println("μ€ν¨νμ΅λλ€.");
}
sc.close();
}
}
Formatter
νμ λ¬Έμμ΄μ μ 곡νκ³ μ΄ λ¬Έμμ΄μμ μ§μ ν λλ‘ λ°μ΄ν°κ° νμν λλ€. format() λ©μλμ νμ λ¬Έμμ΄μΈ format λ¬Έμμ΄μ μΆλ ₯νκ³ μΆμ λ¬Έμμ΄ ννλ‘ μ§μ νκ³ κ·Έ μ€κ°μ %λ‘ μμνλ νμν μΈμλ₯Ό μ§μ νλ€. μ΄ νμν μΈμλ λͺ κ°λ₯Ό λ£μ΄λ μκ΄μμ§λ§ λ λ²μ§Έ μΈμμΈ λΉμ ν μΈμμμ νμν μΈμμ μλ§νΌμ λ°μ΄ν°κ° νμνλ€.
NumberFormat
μΆμ ν΄λμ€λ‘ μ«μμ ν¬λ§·μ μ§μ ν λ μ¬μ©νλ ν΄λμ€, ννν μ μλ ν¬λ§·μ μ’ λ₯μλ μ μν, ν΅ν μμΉ, νΌμΌνΈκ° μλ€. λ¬Έμμ΄μ νλΌλ―Έν°λ‘ μ¬μ©νλ parse() λ©μλλ₯Ό μ¬μ©νλ©΄ ν¬λ§·μ΄ μ μ©λμ΄ μλ λ¬Έμμ΄μ Number κ°μ²΄λ‘ λ°νν μ μλ€.
package ch07.unit07;
import java.text.NumberFormat;
import java.util.Locale;
public class Ex01_NumberFormat {
public static void main(String[] args) {
String s;
// μλ μΆλ ₯μ λͺ¨λ λ¬Έμμ΄λ‘! μ«μ μλ!
// μ«μ -> λ¬Έμμ΄
int a = 12345;
s = Integer.toString(a);
System.out.println(s); // 12345
s = String.format("%,d", a);
System.out.println(s); // 12,345
s = String.format("%.2f", 125.7788);
System.out.println(s); // 125.78
s = String.format(Locale.ITALY, "%.2f", 125.7788); // μ΄ν리λ ,κ° μμμ
System.out.printf(s); // 125,78
System.out.println();
// μ«μμ λν ν¬λ©§
NumberFormat nf = NumberFormat.getInstance(); // λ£λ€κ° λμ€λ©΄ μλ , λΆμ
s = nf.format(a);
System.out.println(s);
s = nf.format(12345.2569);
System.out.println(s); // μμμ κΈ°λ³Έ 3μ리.
NumberFormat nf2 = NumberFormat.getInstance(); // λ£λ€κ° λμ€λ©΄ μλ , λΆμ
nf2.setMaximumFractionDigits(4); // μμμ μ΅λ 4μ리
nf2.setMinimumFractionDigits(2); // μμμ μ΅μ 2μ리
s = nf2.format(12345.25687);
System.out.println(s); // 12,345.2569
s = nf2.format(12345);
System.out.println(s); // 12,345.00
// ν΅ν
NumberFormat nf3 = NumberFormat.getCurrencyInstance();
s = nf3.format(12345);
System.out.println(s); // β©12,345
// λ―Έκ΅ ν΅ν. λ―Έκ΅μ μμμ μ¬μ©.
NumberFormat nf4 = NumberFormat.getCurrencyInstance(Locale.US);
s = nf4.format(12345);
System.out.println(s); // $12,345.00
// νΌμΌνΈ
NumberFormat nf5 = NumberFormat.getPercentInstance();
s = nf5.format(0.23);
System.out.println(s); // 23%
}
}
package ch07.unit07;
import java.text.NumberFormat;
public class Ex02 {
public static void main(String[] args) {
String s1 = "1234"; // μ μ
String s2 = "1,234"; // μ μ
String s3 = "4567.12"; // μ€μ
// int n = Integer.parseInt(s2);
// System.out.println(n); // ,κ° μμ΄μ μλ¨.
int n = Integer.parseInt(s2.replaceAll(",", "")); // ,μ κ±° ν
System.out.println(n); // 1234
System.out.println();
// λ¬Έμμ΄ -> μ«μ
NumberFormat nf = NumberFormat.getInstance();
try {
// Number : integer, Long, Double λ±μ μμ ν΄λμ€
// integer, Long, Double ν΄λμ€λ μλ‘ μμ κ΄κ³κ° μλ νμ κ΄κ³μ΄λ―λ‘ νλ³ν λΆκ°.
// Upcasting : Long μ Numberλ‘. μΈμ λ κ°λ₯
// Downcasting : Number -> Long.
// parse()λ‘ νλ³ν λ κ²°κ³Όλ μ μλ Long, μ€μλ Double
Number n1 = nf.parse(s1); // Long //
Number n2 = nf.parse(s2); // Lone
Number n3 = nf.parse(s3); // Double
System.out.println(n1); // 1234
System.out.println(n2); // 1234
System.out.println(n3); // 4567.12
System.out.println();
// System.out.println((n1 + 1000)); // μ»΄μ€λ₯. n1μ λ¬Έμμ΄λ μλκ³ μ«μλ μλ.
// Integer ii = (Integer)n1; // λ°μ€λ₯. longνμ integerλ‘ μΊμ€ν
ν μ μλ€. // ClassCastException
Long obj = (Long)n1;
System.out.println(obj + 1000); // 2234
// μ€μλ₯Ό μ μλ§ μ²λ¦¬ νλλ‘. μμμ λ²λ¦¬κΈ°
nf.setParseIntegerOnly(true);
Number n4 = nf.parse(s3);
System.out.println(n4); // 4567
} catch (Exception e) {
e.printStackTrace();
}
}
}
DateFormat
κ΅κ°λ³ μ€μ κ³Ό μκ΄μμ΄ λ μ§ λλ μκ°μ νμν(λ μ§ →ν μ€νΈ)νκ±°λ ꡬ문 λΆμ(ν μ€νΈ→λ μ§)μ μν abstract ν΄λμ€μ΄λ€. λ μ§λ Date κ°μ²΄λ₯Ό μ¬μ©νκ±°λ 1970λ 1μ 1μΌ 00:00:00 GMT μ΄ν λ°λ¦¬ μ΄λ‘ νμνλ€. μΆμ ν΄λμ€μ΄λ―λ‘ νμ¬ λ‘μΌμΌμ λ μ§λ₯Ό νμννλ €λ©΄, μ μ (static) ν©ν 리 λ©μλ μ€ νλλ₯Ό μ¬μ©νλ€.
package ch07.unit07;
import java.text.DecimalFormat;
public class Ex03_DecimalFormat {
public static void main(String[] args) {
// DecimalFormat : ν¨ν΄ νμμΌλ‘ μ«μλ₯Ό λ¬Έμμ΄λ‘ λ³ν
String s;
DecimalFormat df1 = new DecimalFormat("#,##0"); // #:μ«μκ° μμΌλ©΄ λμ€κ³ μμΌλ©΄ λμ€μ§ λ§λΌ
s = df1.format(2345.566987);
System.out.println(s); // 2,346 // λ°μ¬λ¦Ό
System.out.println();
DecimalFormat df2 = new DecimalFormat("#,##0.##");
s = df2.format(2345.566987);
System.out.println(s); // 2,345.57 // λ°μ¬λ¦Ό
s = df2.format(2345);
System.out.println(s); // 2,345 // λ°μ¬λ¦Ό
System.out.println();
DecimalFormat df3 = new DecimalFormat("#,##0.0#");
s = df3.format(2345.566987);
System.out.println(s); // 2,345.57 // λ°μ¬λ¦Ό
s = df3.format(2345);
System.out.println(s); // 2,345.57 // λ°μ¬λ¦Ό
System.out.println(); // 2,345.0
DecimalFormat df4 = new DecimalFormat("#,###");
s = df4.format(2345.566987);
System.out.println(s); // 2,346
s = df4.format(0);
System.out.println(s); // 0
}
}
ChoiceFormat
λ°°μ΄λμ ν¨ν΄ννλ‘ '#' λλ '<'μ λ κ°μ§ ꡬλΆμλ₯Ό μ΄μ©νμ¬ 'imit#value'μ νμμΌλ‘ μ¬μ©νλ©° '#'μ κ²½κ³ κ°μ λ²μμ ν¬ν¨ νμ§λ§ '<'λ ν¬ν¨ νμ§ μλλ€.
package ch07.unit07;
import java.text.ChoiceFormat;
public class Ex04_ChoiceFormat {
public static void main(String[] args) {
// ChoiceFormat : νΉμ λ²μμ λ¬Έμμ΄ λ°ν
double[] limits = {0,60,70,80,90}; // μ μμμμ ν°μμμΌλ‘.
String [] grads = {"F","D","C","B","A"};
ChoiceFormat cf = new ChoiceFormat(limits, grads);
System.out.println("95 : " + cf.format(95));
System.out.println("80 : " + cf.format(80));
System.out.println("0 : " + cf.format(0));
System.out.println("-30 : " + cf.format(-30));
limits = new double [] {0,60,65,70, 75, 80, 85, 90, 95}; // μ μλ κ°μ λ§μμΌ ν¨.
grads = new String[] {"0.0","1.0","1.5","2.0","2.5", "3.0", "3.5", "4.0", "4.5"};
ChoiceFormat cf2 = new ChoiceFormat(limits, grads);
System.out.println("95 : " + cf2.format(95));
System.out.println("80 : " + cf2.format(80));
System.out.println("0 : " + cf2.format(0));
System.out.println("-30 : " + cf2.format(-30));
//μ£Όμ λμ€λ κ²°κ³Όλ λ¬Έμμ΄μ΄λ―λ‘ doubleλ‘ λ³ν
double a = Double.parseDouble(cf2.format(95));
System.out.println(a);
String p = "60#D|70#C|80<B|90#A"; // # < λ§ κ°λ₯ //
ChoiceFormat cf3 = new ChoiceFormat(p);
System.out.println("95 : " + cf3.format(95)); // A
System.out.println("90 : " + cf3.format(90)); // A
System.out.println("85 : " + cf3.format(85)); // B // κ°μ₯ κ°κΉμ΄ μ
System.out.println("80 : " + cf3.format(80)); // C // 80#Bνλ©΄ Bλ‘ λμ΄.
System.out.println("65 : " + cf3.format(65)); // D
System.out.println("0 : " + cf3.format(0)); // D
//μ£Όμ λμ€λ κ²°κ³Όλ λ¬Έμμ΄μ΄λ―λ‘ doubleλ‘ λ³ν
}
}