팰린드롬 문제를 풀다가 StringBuffer에서 reverse라는 메소드를 쓸 수 있어서 이 메소드로 풀어보았습니다.
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
str.trim();
StringBuffer s = new StringBuffer(str);
StringBuffer r = new StringBuffer(str);
r.reverse();
int flag = 0;
if(s.equals(r)) flag = 1;
System.out.print(flag);
sc.close();
}
분명 출력으로 확인했을 땐 값이 같았는데 자꾸 flag가 0이 나왔습니다.
StringBuffer
StringBuffer에는 equals 메소드를 상속하지 않습니다.
equals를 사용해도 == 연산자를 사용한 것과 같은 결과가 나오게 됩니다.
따라서 toString으로 String화 해주고 equals를 사용하여 문제를 해결했습니다.
* equals는 내용을 비교한 것이고, == 연산자는 객체 자체를 비교한 것이다.
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
str.trim();
StringBuffer s = new StringBuffer(str);
StringBuffer r = new StringBuffer(str);
r.reverse();
int flag = 0;
String str1 = s.toString();
String str2 = r.toString();
if(str1.equals(str2)) flag = 1;
System.out.print(flag);
sc.close();
}
![](https://blog.kakaocdn.net/dn/cTSvKY/btsjaIgr2ht/ZbG7aT5KY3gzA2APJKMJZ1/img.png)
![](https://blog.kakaocdn.net/dn/8f6GU/btsjdAnTNcQ/IAp7Ibof1ucc6fXEAGmVgK/img.png)
'JAVA' 카테고리의 다른 글
JAVA의 메모리 구조, 멀티 스레드 공유 변수 문제 (2) | 2023.06.29 |
---|---|
JDK, JRE, JVM (0) | 2023.06.29 |
[JAVA] 5주차 | 멀티스레드 개념, 동기화 문제 (2) | 2023.06.02 |
[JAVA] 4주차 | 테트리스 게임 만들기 (2) | 2023.05.22 |
[JAVA] 3주차(2) | 제네릭(Generic), Collection, ArrayList (0) | 2023.05.17 |