37일 차 - 문자열 토큰 구분(StringTokenizer), BigInteger 클래스 (23.02.16)

yvonne·2023년 2월 16일
0

📂Java

목록 보기
37/51
post-thumbnail

1. 아래를 프로그래밍 하시오.

  • Scanner를 이용하여 한 라인을 읽고,
    공백으로 분리된 어절이 몇 개인지 출력을 반복하는
    프로그램을 작성하라. “exit”이 입력되면 종료한다.

  • 단) stringTokenizer 활용
    try catch 구문 넣으시오.


package drivertest;

import java.util.Scanner;
import java.util.StringTokenizer;

public class overrideTest5 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		while (true) {
			System.out.println("문장을 입력해주세요.");
			String str = sc.nextLine();

			StringTokenizer st1 = new StringTokenizer(str, " ");

			int count = 0;

			while (st1.hasMoreTokens()) {
				System.out.println(st1.nextToken());
				count++;
			}
			System.out.println();
			System.out.println("count " + count + "개의 단어입니다.");
			System.out.println("다시 하시겠습니까?");

			String input = sc.nextLine();

			if (input.equals("y") || input.equals("yes")) {
				continue;
			} else if (input.equals("exit")) {
				break;
			}

		}
	}

}




2. 아래의 Random 객체의 차이는?

Random r1 = new Random();
Random r2 = new Random(10);





3. BigInteger 클래스에 대하여 설명하시오.

📌 BigInteger class

  • long형을 넘는 더 큰 범위의 정수를 다룰 때 사용하는 클래스로 java.math에 속한다.
  • int, long과 같은 자료형처럼 사칙연산(+,-,*,/,%)을 기호로 할 수 없고, BigInteger에서 제공하는 메서드를 이용해야 한다.

📌 BigDecimal class

  • 기본적으로 위의 BigInteger 클래스와 비슷하지만 차이점은 BigInteger은 정수 , BigDecimal은 실수를 다룬다는 점이다.
  • double, float 등은 정밀도에 한계가 있어 원하는 값이 나오지 않을 수 있다. 이럴 때 BigDecimal을 이용해 해결한다.
  • BigInteger와 다른 점은 double, int, long타입으로도 생성이 가능하다는 점인데, double의 정밀도의 한계가 있어 사용하는 클래스 이므로 double타입으로 생성할 경우 오차 발생 가능성이 존재한다.

  • 두 클래스는 꼭 필요한 경우에만 제한적으로 사용해야하며 무조건적으로 사용하는 것은 지양 해야 한다.

  • 이 클래스들을 기반으로 만들어진 인스턴스는 immutable이다(연산 결과 → 새로운 객체 생성)

  • BigDecimal 역시 BigInteger처럼 보통 문자열로 인자를 받아서 함수로 연산한다.

  • 클래스 안에는 우리가 생각하는 쓸만한 데이터 멤버, 함수들이 많이 포함되어있다.
    ex) .MAX_VALUE, .MIN_VALUE, .add, .multiply 등등

profile
개발 연습장

0개의 댓글