[Java] 7. Object & String & Math 클래스

Kyunghwan Ko·2022년 9월 29일
0

Java

목록 보기
9/14

01. Object 클래스

Object 클래스는 java.lang 패키지에 들어있고 모든 클래스의 조상이다.

.toString();

Object 클래스의 toString() 메서드는 객체의 문자 정보 return

Object obj = new Object();
System.out.println(obj.toString());
[실행결과]
java.lang.Object1@defxed
  • 일반적인 경우, 의미있는 문자정보가 나오도록 오버라이딩함
  • Date 클래스 -> 현재 시스템의 날짜와 시간 정보 return
  • String 클래스 -> 저장하고 있는 문자열 return

02. String 클래스

.indexOf(); - 문자열 안에서 단어찾기

int index = "The cat is on the table".indexOf("table");
if(index == -1){System.out.println("talbe은 없습니다");}
else{System.out.println("tlable의 위치: " + index);} // 18

.trim(); - 문자열 공백제거

String str1 = "I love java";
System.out.println(str1.length()); // 11
System.out.println(str1.trim().length()); // 9

.split(); - discriminator 가지고 문자열 분리

String[] tokens = "100,200,300".split(","); // ["100", "200", "300"]

.valueOf(); - 기본 타입값을 문자열로 전환

//static String valueOf(int i);
String str1 = String.valueOf(23); // "23"
System.out.println(str1 instanceof String); // true

Integer.parseInt(); - 특정 타입값을 정수타입으로 전환

String str1 = "100";
int int2 = Integer.parseInt(str1);

문제1

Scanner를 이용하여 한 라인을 읽고, 공백으로 분리된 어절이 몇 개 들어 있는지 "그만"을 입력할 때까지 반복하는 프로그램을 작성하라.

I love Java.
어절 개수는 3
자바는 객체 지향 언어로서 매우 좋은 언어이다.
어절 개수는 7
그만
종료합니다...

[Hint] Scanner.nextLine()을 이용하면 빈칸을 포함하여 한 번에 한 줄을 읽을 수 있다.

정답코드1

public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		try {
			while(true) {
				System.out.print(">>");
				String str = sc.nextLine();
				if(str.equals("그만")) {
					System.out.println("종료합니다...");
					break;
				}
				String[] words = str.split(" ");
				System.out.println("어절의 갯수는 " + words.length);
			}
		} catch (Exception e) {
			e.printStackTrace();
            System.out.println("프로그램을 새롭게 시작합니다.");
            continue;
		}
		
	}

과제(스택구현)

class Stack {
	
	private int top;
	private int stackSize;
	private char stackArr[];

	// 스택이 비어있는 상태인지 확인
	// 스택 포인터가 -1인 경우 데이터가 없는 상태이므로 true 아닌 경우 false를 return
	public boolean isEmpty() {		
		return (top == -1);
	}

	// 스택이 가득찬 상태인지 확인
	// 스택 포인터가 스택의 마지막 인덱스와 동일한 경우 true 아닌 경우 false를 return
	public boolean isFull() {		
		return (top == this.stackSize - 1);
	}

	// 스택에 데이터를 추가
	public void push(char item) {
		if (isFull()) {
			System.out.println("Stack is full!");
		} else {
			stackArr[++top] = item; // 다음 스택 포인터가 가리키는 인덱스에 데이터 추가
			System.out.println("Inserted Item : " + item);
		}
	}

	// 스택의 최상위(마지막) 데이터 추출 후 삭제
	public char pop() {
		if (isEmpty()) {
			System.out.println("Deleting fail! Stack is empty!");
			return 0;
		} else {
			System.out.println("Deleted Item : " + stackArr[top]);
			return stackArr[top--];
		}
	}

	// 스택의 최상위(마지막) 데이터 추출
	public char peek() {
		
		if (isEmpty()) {
			System.out.println("Peeking fail! Stack is empty!");
			return 0;
		} else {
			System.out.println("Peeked Item : " + stackArr[top]);
			return stackArr[top];
		}
		
	}

	// 스택 초기화
	public void clear() {
		
		if (isEmpty()) {
			System.out.println("Stack is already empty!");
		} else {
			top = -1; // 스택 포인터 초기화
			stackArr = new char[this.stackSize]; // 새로운 스택 배열 생성
			System.out.println("Stack is clear!");
		}
		
	}

	// 스택을 생성하는 생성자
	public Stack(int stackSize) {
        top = -1;    // 스택 포인터 초기화
        this.stackSize = stackSize;    // 스택 사이즈 설정
        stackArr = new char[this.stackSize];    // 스택 배열 생성
    }

	// 스택에 저장된 모든 데이터를 출력
	public void printStack() {
		if (isEmpty()) {
			System.out.println("Stack is empty!");
		} else {
			System.out.print("Stack elements : ");
			for (int i = 0; i <= top; i++) {
				System.out.print(stackArr[i] + " ");
			}
			System.out.println();
		}
	}

}

public class StackTest {
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		System.out.print("스택 사이즈를 입력하시오.");
		int stackSize = sc.nextInt() ;
		
		Stack stack = new Stack(stackSize);

		stack.push('A');
		stack.printStack();

		stack.push('B');
		stack.printStack();

		stack.push('C');
		stack.printStack();

		stack.pop();
		stack.printStack();

		stack.pop();
		stack.printStack();

		stack.peek();
		stack.printStack();

		stack.clear();
		stack.printStack();
	}
}
profile
부족한 부분을 인지하는 것부터가 배움의 시작이다.

0개의 댓글