πŸ’»/JAVA

[Java] 12일차 : μžλ°”μ˜ κΈ°λ³Έ API 클래슀 5

λ”°κΆˆ 2024. 3. 2. 23:08

 

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둜 λ³€ν™˜
	}

}