String 클래스
문자열을 다루기 위한 클래스 => 참조변수
String str = new String();
String str = "홍길동"; // 일반 자료형처럼 이용가능
문자열은 배열과 비슷한 형식
- "홍길동" 0 1 2 index를 가짐
- 공백, 기호 전부 하나의 텍스트로 인지.
length() : 전체 글자의 길이 (총글자수)
charAt(index) : index 번지에 있는 문자열을 반환
subString() : 문자열 추출 - start는 포함 , end 는 미포함 end가 없으면 끝까지.
compareTo(문자) : 문자를 비교하여 앞이면 -1, 같으면 0 , 뒤에있으면 1
concat() : 이어붙이기 ( + 연산자와 같은 의미)
equals() : 두 문자가 같은지 비교(대소문자 구분) 같으면 true 다르면 false
참조변수에서 == 는 주소를비교 equals 로 값을 비교
indexOf() : 문자의 위치(index)를 찾아주는 기능, 찾는문자가 없으면 -1 리턴
lastIndexOf() : 문자의 뒤에서부터 값을 찾음.
contains() : 해당 문자를 포함하는지 체크
trim() : 불필요한 공백 제거
toLowerCase(),toUpperCase() : 대소문자 변환
isEmpty(): 객체가 비어있는지 체크 비어있으면 true 아니면 false
isBlack(): 비어있어도 true 띄어쓰기도 true
replace(): 글자 치환
split(): 특정 값을 기준으로 나누기 => 배열로 리턴
Integer.parseInt() : 숫자로 변환
String.valueOf(): 숫자를 문자로 변환
활용 ex)
public class StringEx02 {
public static void main(String[] args) {
/* 5개의 파일명이 배열로 주어졌을 때,
* 검색어를 입력하면 해당 단어를 포함하는 파일을 출력
* 만약 없다면... 검색결과가 없습니다.
*/
Scanner scan = new Scanner(System.in);
String[] file = {"이것이자바다.java","java의 정석.java","String.jpg","String method.txt","Array.java"};
//ex) java => 이것이자바다.java, java의 정석.java, Array.java
// 검색결과가없습니다.
System.out.println("검색단어를 입력해주십시오.");
String serch = scan.next();
int count = 0;
for(int i=0; i < file.length; i++) {
if(file[i].contains(serch)) {
count++;
System.out.print(file[i]+" ");
}
}
if(count == 0) {
System.out.println("검색결과가 없습니다.");
} else {
System.out.println("총: " + count + "개");
}
scan.close();
}
}
Method
메서드 : 기능(함수)
메서드 선언 및 구현
접근제한자(제어자) 리턴타입 메서드명(매개변수){
구현;
}
접근제한자(제어자) : 접근 할 수 있는 주체의 제한범위
리턴타입 : 반환값의 타입 (메서드의 처리가 끝난 후 결과로 알려주는 값의 자료형)
메서드명 : 소문자로 시작
매개변수 : 기능을 수행하기 위해 필요로 하는 값(외부에서 들어와야하는 값) - 생략가능
리턴타입은 생략 불가능, void(리턴 할 것이 없다는 것을 의미)
메서드의 위치
클래스 안, 다른 메서드 밖
메서드는 선언 순서가 의미없음.
순서대로 실행되지않고, 호출에 의해 실행됨.
return
- 메서드에서 값을 리턴하는 역할
- 메서드에서 return은 값을 리턴후 종료
메서드 종료를 의미.
ex)
public class MethodEx01 {
public static int sum(int num1, int num2) {
return num1 + num2;
}
public static int sub(int num1, int num2) {
return num1 - num2;
}
public static int mul(int num1, int num2) {
return num1 * num2;
}
public static double div(int num1, int num2) {
if(num2 ==0) {
return -99999;
}
return num1 / num2;
}
public static int mod(int num1, int num2) {
if(num2 ==0) {
return -99999;
}
return num1 % num2;
}
public static void main(String[] args) {
/* 계산기 만들기
* -- menu--
* |1. 덧셈|2. 뺄셈|3. 곱셈|4. 나눗셈|5. 나머지|6. 종료|
* >> 메뉴선택 1
* >> 숫자1 10
* >> 숫자2 20
* 결과 : 10 + 20 = 30
* (메서드로 작업하여 호출)
*/
Scanner scan = new Scanner(System.in);
int menu = 0;
while(true) {
System.out.println("-- menu --");
System.out.println("|1. 덧셈|2. 뺄셈|3. 곱셈|4. 나눗셈|5. 나머지|6. 종료|");
menu = scan.nextInt();
if(menu == 6) {
System.out.println("종료합니다.");
break;
}
System.out.println("두 수를 입력해주세요.");
int num1 = scan.nextInt();
int num2 = scan.nextInt();
double result = div(num1, num2);
int result2 = mod(num1, num2);
switch(menu) {
case 1 :
System.out.println(num1+"+"+num2+"="+sum(num1, num2));
break;
case 2 :
System.out.println(num1+"-"+num2+"="+sub(num1, num2));
break;
case 3 :
System.out.println(num1+"*"+num2+"="+mul(num1, num2));
break;
case 4 :
if(result == -99999.0) {
System.out.println("잘못된 입력입니다.");
} else {
System.out.println(num1+"/"+num2+"="+result);
}
break;
case 5 :
if(result2 == -99999.0) {
System.out.println("잘못된 입력입니다.");
} else {
System.out.println(num1+"%"+num2+"="+result2);
}
break;
default :
System.out.println("잘못된 입력");
break;
}
}
scan.close();
}
}
야구게임 만들기
import java.util.Scanner;
public class Exam {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int comNum[] = new int[3];
int userNum[] = new int[3];
// 컴퓨터의 랜덤 수 생성 : 중복x (1~9)
for(int i = 0; i<comNum.length; i++) {
comNum[i] = (int)(Math.random()*9)+1;
for(int j=0; j<i; j++) {
if(comNum[i] == comNum[j]) {
i--;
}
}
}
// for(int a : comNum) {
// System.out.print(a+" ");
// }
// System.out.println();
while(true) {
System.out.println(" 숫자 입력 >> ");
String myStr = scan.next();
String[] myNum = myStr.split("");
for(int i=0; i<userNum.length; i++) {
userNum[i] = Integer.parseInt(myNum[i]);
}
// 숫자 비교
int s =0;
int b =0;
for(int i=0; i<comNum.length; i++) {
for(int j=0; j < userNum.length; j++) {
if(comNum[i] == userNum[j] && i == j) { // 값도 존재하고, 위치도같다면
s++;
} else if (comNum[i] == userNum[j] && i !=j) {
b++;
}
}
}
if( s == 3) {
System.out.println(" 스트라이크 3개 정답~!!");
break;
} else if ( s == 0 && b == 0) {
System.out.println(" out 입니다.");
} else {
System.out.println("스트라이크 :"+ s +"볼:"+ b);
}
}
scan.close();
}
}