24일 차 -String 클래스, StringBuilder, Scanner 클래스 (23.01.30)

yvonne·2023년 1월 30일
0

📂Java

목록 보기
24/51

1. 아래 프로그램을 작성하시오.

국어, 영어, 수학 점수를  scanner 로 입력 받아
평균과 학점을 출력 하는 프로그램을 짜시오.

단) Grade(국어,영어,수학) 클래스를 만들것.

  • 출력
    총점 : 240
    평균 : 80

package scannertest;

import java.util.Scanner;

class Grade {
	int kor, eng, mat;
	double avg;

	public int sum() {
		return kor + eng + mat;
	}

	public double avg() {
		this.avg = (kor + eng + mat) / 3;
		return avg;
	}

	public char grd() {
		char g = '수';
		if (avg >= 90) {
			g = '수';
		} else if (avg >= 80) {
			g = '우';
		} else if (avg >= 70) {
			g = '미';
		} else if (avg >= 60) {
			g = '양';
		} else {
			g = '가';
		}
		return g;
	}
}

public class ScannerTest {

	public static void main(String[] args) {
		Grade g1 = new Grade();
		Scanner sc = new Scanner(System.in); // system.in 키보드로 입력받겠다는 의미

		System.out.print("국어:");
		g1.kor = sc.nextInt(); // 공백 기준으로 스캔

		System.out.print("영어:");
		g1.eng = sc.nextInt();

		System.out.print("수학:");
		g1.mat = sc.nextInt();

		System.out.println("총점:" + g1.sum());
		System.out.println("평균:" + g1.avg());
		System.out.println("학점은 " + g1.grd() + " 입니다.");
	}

}
  • 출력결과



2. String 과 StringBuilder 의 차이는?

  • String: 객체에 할당된 공간의 크기가 고정(=불변, immutable) → 문자열을 더할 때 새로운 메모리를 할당하는 방식
  • StringBuilder와 StringBuffer: 객체에 할당된 공간의 크기가 가변(mutable) → 문자열을 더할 때 새로운 객체를 생성하는 것이 아니라 기존의 데이터에 더하는 방식


3. 아래의 String 함수를 설명하시오.


StringBuilder str = new StringBuilder();

  • str.length(): 문자열의 길이를 확인하는 메서드

  • str.substring(indexstart,indexend): indexstart부터 indexend 앞 자리까지의 값을 잘라오는 메서드

  • str.concat(str2): str의 문자열과 str2의 문자열을 연결하는 메서드

  • str.append("안녕하세요"): str 마지막 부분부터 값을 이어서 덧붙이는 메서드

  • str.charAt(index): String 타입으로 받은 문자열의 index부분을 char 타입으로 변환

  • str.insert(index,value): 특정 인덱스부터 값을 삽입하는 메서드

  • str.delete(indexstart,indexend): indexstart부터 indexend의 앞 자리까지 값을 삭제하는 메서드

  • str.indexOf("a"): a라는 문자가 어느 위치에 있는지 확인하는 메서드

  • str.replace(indexstart,indexend,"ab"): indexstart부터 indexend 앞 자리까지를 ab로 교체하는 메서드

  • str.reverse(): 문자열을 반전시키는 메서드





4. String.valueOf 에 대하여 설명하시오.

  • String.valueOf();: 문자열로 바꾸는 함수
static String valueOf(boolean b)
static String valueOf(char c)
static String valueOf(double d)
static String valueOf(float f)
static String valueOf(int i)
static String valueOf(long l)




5. 사용자로부터 받은 문자열(영문으로)에서 자음과 모음 개수를 계산하는 프로그램을 작성하라.

import java.util.Scanner;

class EnglishCount {
	private String eng;
	private int consonant, vowel;

	public String getEng() {
		return eng;
	}

	public void setEng(String eng) {
		this.eng = eng;
	}

	public int getConsonant() {
		return consonant;
	}

	public void setConsonant(int consonant) {
		this.consonant = consonant;
	}

	public int getVowel() {
		return vowel;
	}

	public void setVowel(int vowel) {
		this.vowel = vowel;
	}

	public void count() {
		for (int i = 0; i < eng.length(); i++) {
			if (eng.charAt(i) == 'a' || eng.charAt(i) == 'e' || eng.charAt(i) == 'i' || eng.charAt(i) == 'o'
					|| eng.charAt(i) == 'u' || eng.charAt(i) == 'A' || eng.charAt(i) == 'E' || eng.charAt(i) == 'I'
					|| eng.charAt(i) == 'O' || eng.charAt(i) == 'U') {
				vowel++;
			} else if (eng.charAt(i) == ' ') {

			} else {
				consonant++;
			}
		}
		System.out.println("모음은" + vowel + "개 입니다.");
		System.out.println("자음은" + consonant + "개 입니다.");
	}

}

public class ScannerTest2 {

	public static void main(String[] args) {
		EnglishCount ec = new EnglishCount();
		Scanner sc = new Scanner(System.in); // system.in 키보드로 입력받겠다는 의미

		System.out.print("문자입력:");
		ec.setEng(sc.nextLine()); // 공백 기준으로 스캔

		ec.count();
	}

}

  • 출력결과




6. 아래의 연산과정에서 호출되는 함수(원리)를 써서 표현해 보세요.

  • String str = "age: " + 17;

  • 17은 문자열로 자동 형 변환이 되고, 그 후 concat 함수에 적용되어 age 문자열 뒤에 연결된다.
profile
개발 연습장

0개의 댓글