[자바] 질문자가 질문을 바꾸는 경우..
너무 간단한 건데 아무도 답변을 안달아서, 달려고 쪼물락 거리다가 이번에도 감이 수상해서 새창 열어 확인했더니..
질문) 자바 string 비교
저건 q랑 d가같으면 이죠?
그런데 저렇게하면 단순히 값만 비교하게되는데 --> 빨간부분에서 질문의 내용이 완전 바뀜..
d 값이 1 이라면 --> 본래는 다를때 equals 표현은 어떻게 쓰는가 였음.
타인의 답변)
내 답변)
아래를 보면서 비교해 보세요.
1. CLASS
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String k1[] = {"a", "b", "c"};
// case1
System.out.print("비교할 대상이 'a' 이면 : ");
System.out.println();
if(k1[0].equals("a")){
System.out.println("1-1. 같으면");
}else if(!k1[0].equals("a")){
System.out.println("1-2. 같지 않으면");
}else{
System.out.println("1-3. 그 외");
}
if(k1[0] == "a"){
System.out.println("2-1. 같으면");
}else if(k1[0] != "a"){
System.out.println("2-2. 같지 않으면");
}else{
System.out.println("2-3. 그 외");
}
if("a" == "a"){ // 극단적인 비교를 위해..
System.out.println("3-1. 같으면");
}else if("a" != "a"){ // 극단적인 비교를 위해..
System.out.println("3-2. 같지 않으면");
}else{
System.out.println("3-3. 그 외");
}
// case2
System.out.print("\na, b, c 중 입력받으면 : ");
String in1 = sc.nextLine();
if(k1[0].equals(in1)){
System.out.println("1-1. 같으면");
}else if(!k1[0].equals(in1)){
System.out.println("1-2. 같지 않으면");
}else{
System.out.println("1-3. 그 외");
}
if(k1[0] == in1){
System.out.println("2-1. 같으면");
}else if(k1[0] != in1){
System.out.println("2-2. 같지 않으면");
}else{
System.out.println("2-3. 그 외");
}
if("a" == in1){
System.out.println("3-1. 같으면");
}else if("a" != in1){
System.out.println("3-2. 같지 않으면");
}else{
System.out.println("3-3. 그 외");
}
}
2. RUN
비교할 대상이 'a' 이면 :
1-1. 같으면
2-1. 같으면
3-1. 같으면
a, b, c 중 입력받으면 : a
1-1. 같으면
2-2. 같지 않으면
3-2. 같지 않으면
a, b, c 중 입력받으면 : b
1-2. 같지 않으면
2-2. 같지 않으면
3-2. 같지 않으면
결론은..
같은것과 같지 않을 것을 비교할 때는 조건문(if)의 첫번째 조건이 무조건 같은것으로 설정해 주면 됩니다.
if() ~ else if() ~ 같이 if 문을 switch case 처럼 쓰지 않는다면.. '!=' 이나 'not equals' 등은 어떻게 쓰든 의미가 없습니다.
// 저런식으로 질문을 바꿔버리면 답변을 채택했다 하더라도..
// 나중에 해당 질문을 조회한 사람은 왠 동문서답이냐고 생각하게되고, 답변을 단 지식인의 공신력에 흠집이 나게 된다.
// 내 답변 역시 수정 전의 질문에 맞춰서 만들어진 답변이다.