JAVA String class (230623)

이원건·2023년 6월 23일
0

JAVA

목록 보기
15/33
post-thumbnail

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

  • 문제(출력값)
이름:kom
국어:80
영어:90
수학:100
kom님의 평균은90.0성적은수입니다.
계속?y
이름:yun
국어:90
영어:70
수학:55
yun님의 평균은71.66666666666667성적은미입니다.
계속?yes
이름:한글
국어:90
영어:75
수학:80
한글님의 평균은81.66666666666667성적은우입니다.
계속?klsjdaf
종료되었습니다.

종료되었습니다.
  • 코드
class StudentGrade{
	private String name;
	private double kor;
	private double eng;
	private double math;
	
	public StudentGrade(String name, double kor, double eng, double math) {
		this.name = name;
		this.kor = kor;
		this.eng = eng;
		this.math = math;
	}
	
	public double getAvg() {
		return (kor + eng + math)/3.0;
	}
	
	public char getGrade() {
		double avg = getAvg();
		char grade='가';
		
		if(avg >= 90.0) {
			grade='수';
		} else if(avg >= 80.0) {
			grade='우';
		} else if(avg >= 70.0) {
			grade='미';
		} else if(avg >= 60.0) {
			grade='양';
		} else  {
			grade='가';
		}
		
		return grade;
		
	}
	
	public void showInfo() {
		System.out.println(name +"님의 평균은 " + getAvg() + "이고 성적은 " + getGrade() + "입니다." );
	}
	
	
}
public class ScannerExample2 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		StudentGrade st;
		
		String name;
		double kor;
		double eng;
		double math;
		
		String menu = "no";
		
		while(true) {
			
			System.out.print("이름 : ");
			name = scanner.nextLine();
			System.out.print("국어 : ");
			kor = scanner.nextDouble();
			System.out.print("영어 : ");
			eng = scanner.nextDouble();
			System.out.print("수학 : ");
			math = scanner.nextDouble();
			
			st = new StudentGrade(name, kor, eng, math);
			
			st.showInfo();
			
			System.out.print("계속하시겠습니까? (yes,y/no,n) : ");
			scanner.nextLine();
			menu = scanner.nextLine();
			
			if("yes".compareToIgnoreCase(menu) == 0 || "y".compareToIgnoreCase(menu) ==0 )
				continue;
			else
				break;
		}
		
		System.out.println("프로그램이 종료되었습니다.");
	}
}
  • 결과
이름 : kom
국어 : 80
영어 : 90
수학 : 100
kom님의 평균은 90.0이고 성적은 수입니다.
계속하시겠습니까? (yes,y/no,n) : y
이름 : yun
국어 : 90
영어 : 70
수학 : 55
yun님의 평균은 71.66666666666667이고 성적은 미입니다.
계속하시겠습니까? (yes,y/no,n) : yes
이름 : 한글
국어 : 90
영어 : 75
수학 : 80
한글님의 평균은 81.66666666666667이고 성적은 우입니다.
계속하시겠습니까? (yes,y/no,n) : asdlkfj
프로그램이 종료되었습니다.

  1. 아래의 String 함수에 대하여 예를들어 설명하시오.
  • equals()

    • str1.equals(str2) 라고 하면 str1의 문자열과 str2의 문자열이 같은지 확인한다.
  • indexOf()

    • str.indexOf('c', 2) str 문자열에서 c문자열이 있는 index 번호를 return하는데, 이 경우는 2번 인덱스(포함)부터 시작해서 찾는다.
  • length()

    • str.length()를 할 경우 str 문자열의 길이를 가져온다. str = "String"이라면 int 타입 6을 return
  • substring()

    • str.substring(0, 5) str 문자열의 0번(포함)부터 5번(미포함 -> 4번 인덱스에 해당하는 문자까지)까지 문자열을 잘라 return한다.
  • toUpperCase()와 toLowerCase()

    • str.toUpperCase()는 str의 모든 문자를 대문자로 변환해서 return, str.toLowerCase()는 str의 모든 문자를 소문자로 변환해서 return
  • concat()

    • str1.concat(str2) str1뒤에 str2 문자열을 붙여서 새로운 객체로 만들어서 return.
  • startWith()

    • str1.startWith(str2) => str2를 str1앞에 붙여서 새로운 객체를 만들어서 return
  • replace()

    • str.replace(char ch1, char ch2)가 들어갈 수 있고 str.replace(String str1, String str2)가 들어갈 수 있는데, 앞의 인자를 찾아서 뒤의 인자로 바꿔 String으로 다시 return한다.
  • trim()

    • str.trim() str이 공백으로 시작하거나 공백으로 끝날 때, str의 왼쪽과 오른쪽의 공백을 모두 없애는 함수
  • contains

    • str1.contains(str2) 하면 str1에서 str2에 해당하는 문자열이 있는지 확인. 있으면 true를 return 없으면 false를 return

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

  • 문제
======================
힌트) length 함수와 charAt 함수사용
영어 단어를 입력하세요.
dakjfivnlwe
총 글자 수는: 11개 입니다.
모음은 : 3개 입니다.
자음은 : 8개 입니다.
  • 코드
import java.util.Scanner;

public class StringExample230623 {
	
	static boolean isVowel(char ch) {
		char lowerVowel = Character.toLowerCase(ch);
		switch(lowerVowel) {
		case 'a':
		case 'e':
		case 'i':
		case 'o':
		case 'u':
			return true;
		}
		return false;
	}
	
	public static void main(String[] args) {
		
		Scanner scanner = new Scanner(System.in);
		
		String str, menu;
		int length;
		int vowel, consonant;
		while(true){
			
			System.out.println("영어 단어를 입력하세요.");
			str = scanner.nextLine();
			length =0;
			length = str.length();
			vowel = 0;
			consonant = 0;
			
			System.out.println("총 글자 수는: " + length +"개 입니다.");
			
			for(int i=0;i<length; i++) {
				if(isVowel(str.charAt(i)))	vowel += 1;
				else 						consonant += 1;
			}
			
			System.out.println("모음은 : " + vowel + "개 입니다.");
			System.out.println("자음은 : " + consonant + "개 입니다.");
			
			System.out.print("계속하시겠습니까? (yes,y/no,n) : ");
			
			menu = scanner.nextLine();
			
			if("yes".compareToIgnoreCase(menu) == 0 || "y".compareToIgnoreCase(menu) == 0) {
				continue;
			} else {
				break;
			}
		}
		
		System.out.println("종료되었습니다.");
		
	}
}
  • 결과
영어 단어를 입력하세요.
iopclkdmenwjqkalxod
총 글자 수는: 19개 입니다.
모음은 : 5개 입니다.
자음은 : 14개 입니다.
계속하시겠습니까? (yes,y/no,n) : y
영어 단어를 입력하세요.
icocrmzpqoaskldnfuedico
총 글자 수는: 23개 입니다.
모음은 : 8개 입니다.
자음은 : 15개 입니다.
계속하시겠습니까? (yes,y/no,n) : n
종료되었습니다.

0개의 댓글