특정문자위치 찾기
1.indexOf() 사용법
.indexOf( "찾을 특정 문자" , "시작할 위치" ) 이런식으로 사용해 주면된다.
"시작할 위치" 같은경우는 생략이 가능하며 생략할 경우 0번째 즉 처음부터 찾기 시작한다.
띄어쓰기고 N번째로 인식한다.
Ex.Code)
public class Main {
public static void main(String[] args) {
String test = "Hello World";
System.out.println(test.indexOf("d"));
}
}
=>출력값 : 10

2.substring()
public class Main {
public static void main(String[] args) {
String test = "Hello World";
System.out.println(test.substring(2,6));

}

}
=>출력값 : llo W

3.split() : splitData 배열에 "#" 문자 기준으로 배열의 형태로 str 문자열을 잘라 넣어줍니다. 그러니 str이 들어가는 변수는 배열로 선언해야함

※특수사항 : 탭의 경우 split 함수의 인자로 "\t"를
"." 이나 "|" 문자의 경우 "\." 과 "\|" 문자를 넣어주면
정상적으로 split 함수가 동작하게 됩니다.
Ex.Code)
public class Main {
public static void main(String[] args) {
String str = "Beenzino#Dok2#The Quiett";
String[] splitData = str.split("#");
for(int i=0; i<splitData.length; i++){
System.out.println("splitData"+i+" : "+ splitData[i]);

    }

}

}
=>출력값 : splitData0 : Beenzino
splitData1 : Dok2
splitData2 : The Quiett

4.StringBuffer : StringBuffer 자료형은 append 메소드를 사용하여 계속해서 문자열을 추가해 나갈 수 있다
Ex.Code)
class Solution {
public String solution(String phone_number) {
String number1 = phone_number;
StringBuffer number3 = new StringBuffer();
int i = 0;
int k = 0;
int p = 0;
for(i=0; i<phone_number.length(); i++){
k=i;
}
for(p=0; p<i-4; p++){
number3.append("*");
}
String number2 = number1.substring(p);
return number3+number2;
}
}

전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 * 표로 가림

  1. 날짜 관련 클래스
    SimpleDateFormat 클래스 : 클래스를 생성할때 우리가 원하는 출력형식을 미리 정해주고, 생성된 변수에 Date가 돌려준 값을 넣으면 우리가 원하는 모양 으로 출력.

calendar 클래스 : 시스템에서 지속적으로 참조할 때마다 시간을 얻을 수 있음
->getInstance()라는 메서드 : 클래스 생성 시점과 상관없이 현재의 날짜, 시간 정보를 얻는다
Ex.code_1)

import java.util.Calendar;

public class Main {
public static void main(String[] args) {
Calendar now = Calendar.getInstance();
int hour = now.get(Calendar.HOUR); //get 메소드로 시간 정보 얻기
int min = now.get(Calendar.MINUTE); //get 메소드로 분 정보 얻기
System.out.println("현재시간은" + hour + "시" + min + "분 입니다.");
}
}

Ex.code_2)
프로그래머스 코딩테스트 2016년문제
문제 설명
2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT

입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 "TUE"를 반환하세요.

제한 조건
2016년은 윤년입니다.
2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다)

입출력 예
a b result
5 24 "TUE"
<풀이1>
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

public class Main {
public static void main(String[] args) {
int a = 5;
int b = 24;
String answer = "";
Calendar monthDay = Calendar.getInstance(); // 현재의 날짜, 시간 정보 습득
monthDay.set(2016,a-1, b); //.set으로 monthDay에 값 설정
Date date = monthDay.getTime(); // monthDay 시간을 date에 저장
SimpleDateFormat sdf = new SimpleDateFormat("E", Locale.ENGLISH);
answer = sdf.format(date).toUpperCase(); // .toUpperCase() 대상을 대문자로 변환 // .toUpperCase() 대상을 소문자로 변환
System.out.println(answer);
}
}

<풀이2>
public class Main {
public static void main(String[] args) {
String answer = "";
int a = 5; //월 입력
int b = 24; // 일 입력
String[] day = {"FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"}; //문제에서 2016년 1월 1일은 금요일
int[] date = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; //1월부터 12월까지 각 월별 일 수
int allDate = 0;
for(int i=0; i<a-1; i++){ //a의 입력 값보다 한달 적게 돌고 나머지 일 수는 하단 부 계산식으로 인지
allDate += date[i]; //입력 받은 월-1까지의 일수를 더해서 저장
}
allDate += (b-1); //2월을 29일(윤달) 이기에 30일로 계산을 다한 다음 for문 종료 후 더한 변수에 일 입력 변수 b를 더 할때 -1
answer = day[allDate % 7]; // 모르겠다 물어봐야겠다
System.out.println(answer);
}
}

profile
코린이 성장기

0개의 댓글