⭐키보드에서 세글자 이상의 문장을 입력받고 회문여부 판단하는 로직 구현하기 (회문 : 앞으로 읽어도 뒤로 읽어도 똑같은 문장)
내가 작성한 코드
Scanner sc= new Scanner(System.in);
System.out.print("입력 : ");
String str = sc.next();
String reverse=""; //문자를 입력할 예정이므로 String에 담아준다.
for(int i = str.length(); i>=0; i--) { //입력받은 문장의 마지막부터 거꾸로 반복문 작성.
reverse+=str.charAt(i);
}
if(str.equals(reverse)) { //객체의 값비교는 .equals
System.out.println("회문입니다.");
} else {
System.out.println("회문이 아닙니다.");
}
결과
index와 length 범위에 문제가 있어 오류가 발생했다.
고민
i번째 배열과 length는 위치(순서?)가 같지 않다..!
배열은 0부터 유효하고 length는 단순히 길이를 반환하기 때문에 1부터 유효하다. length를 i에 맞춰 1씩 줄여보자.
새로 작성한 코드
i = length-1인 이유 : length는 배열 인덱스처럼 0부터 유효한게 아닌 1부터 시작하기 때문에
length-1을 해야 마지막 위치(순서?)가 동일하다.
이 length-1을 i에 담아 charAt으로 한글자씩 거꾸로(i--) 추출하고 (2~4번(캡쳐)을 반복)
i가 0이 되면 반복문을 빠져나와 값비교를 한다.
결과
[JAVA] String 클래스, StringBuilder 클래스
자바가 제공하는 String 클래스의 특징 1. 두가지의 객체 생성방법 (암시적, 명시적) 2. 불변의 법칙 : 한번 생성된 문자열의 내용은 변하지 않음 1. 객체 생성방법 String s1 = "abc"; //암시적 객체생성(
studywithjw.tistory.com
참조
'JAVA > 오류고민' 카테고리의 다른 글
[List,Set 컬렉션] 랜덤 숫자 빙고판을 만들자 (0) | 2023.09.02 |
---|---|
[메서드] 숫자맞추기 게임 (0) | 2023.08.31 |
[배열] 로또 번호를 정해보자 (0) | 2023.08.20 |
[배열] 필요한 동전의 개수는? (0) | 2023.08.19 |
오류고민 카테고리 (0) | 2023.08.19 |