JAVA/오류고민

[String 클래스] 앞으로 읽어도 뒤로 읽어도

(งᐛ)ว 2023. 8. 22. 12:09
728x90
728x90

⭐키보드에서 세글자 이상의 문장을 입력받고 회문여부 판단하는 로직 구현하기 (회문 : 앞으로 읽어도 뒤로 읽어도 똑같은 문장)

이렇게 거꾸로 출력하면?

 

 

내가 작성한 코드

Scanner scnew 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

 

 

 

 

 

참조

https://develop-floor.tistory.com/entry/Java%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-07-%ED%9A%8C%EB%AC%B8-%EB%AC%B8%EC%9E%90%EC%97%B4-%EC%A0%95%EB%8B%B5-%EB%B0%8F-%ED%95%B4%EC%84%A4

728x90