1

딜레마가 있습니다. 문자열 배열에 (코드)라는 문자열 변수를 비교하는 가장 좋은 방법을 찾으려고합니다. 그것이 같으면 그것은 for 루프를 깨기를 원한다. 어느 것을 선택해야합니까? 제 2의 작품은 효과가있을 것이라고 생각하지만, 제 1의 작품은 그 것처럼 보일 것 같습니다. 어떤 조언을 주시면 감사하겠습니다.

String[] badcodes = {"8QQ", "8BQ", "8JQ"};
if (code.equals(badcodes)) {
    break;
}

String[] badcodess = {"8QQ", "8BQ", "8JQ"};
for (String s : badcodess) {

    if (s.equals(code)) {
        break; // break out of for loop
    }
}

-------------- 답변을 기반으로 ----------------------

  String[] badcodes = {"8QQ", "8BQ", "8JQ"};
    boolean check = Arrays.asList(badcodess).contains(code);
    if (check = true){
    // do something
    }else{
     do something
     }


  • 배열의 문자열 중 하나라도 값과 같으면code? - Federico klez Culloca
  • "(code)라는 문자열 변수를 문자열 배열과 비교합니다." 에이String절대로String[] - csmckelvey
  • 네, 맞습니다 감사합니다. - Jonathan

2 답변


2

배열을 목록으로 변환 한 다음 사용할 수 있습니다.List::contains목록에 코드가 포함되어 있는지 확인하십시오.

boolean check = Arrays.asList(badcodess).contains(code);


  • if 문을 사용하기 위해 위의 코드를 작성했습니다. 이후 진리가 내가 사실인지 또는 정확하지 않은지 검사하고 있습니다. - Jonathan
  • @ 조나단 당신은 그냥 사용할 수 있습니다.if (check){//do something}else{//do something else}사용할 필요가 없다.check = true이것은 과제이고 비교가 아닌 것입니다.checktrue와 같거나 같지 않음 - YCF_L
  • 그래서 당신의 말은 check = true를 써야하지 않습니까? - Jonathan
  • 정확히 그냥 사용if(check)그것은if(check == true) - YCF_L
  • 알았어 코드가 포함되어 있는지 확인하십시오. 그렇지 않으면이 체크가 필요하지 않습니다. = true는 필요하지 않습니다. 어쨌든 무언가를 할 것 같으면 ... 필요합니다. 알았습니다. - Jonathan

2

첫 번째 옵션은 예상 한대로하지 않습니다. 그리고someArray.equals(anotherArray)요소 별 비교를 할 것입니다. (그렇지 않습니다) - 특별한 배열에 기존 배열의 모든 객체를 정확하게 포함시켜야합니다. 그런 의미에서, 먼저이 접근법이 여러 가지 결함이있는 이유를 이해하고 그 다음에 그것을 버리십시오.

두 번째 옵션은 괜찮지 만, 모든 것을 "향상"시키고 싶다면 - useArrayList대신 -contains()방법.

연결된 질문


관련된 질문

최근 질문