2017-02-18 5 views
1

오늘 절을 IN 구현합니다. Java에서 네 가지 조건을 모두 결합하여 내 요구 사항을 충족하는 단일 조건으로 작성하는 방법이 있습니까? 예 :어떻게 자바에서이 코드를 작성 건너 온

if(fieldName IN ("Name", "ID", "password", "email"){ 
    //do something. . 
} 
. 
. 
. 

이 작업을 수행 할 수있는 방법이나 해결 방법이 있습니까?

+0

귀하의 진술을'if (false) {...}'로 간단히 기재 할 수 있습니다. 이유를 이해하려면 http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java를 읽어보십시오. 실제 질문에 대답하기 위해 Java는 사용자가 찾고자하는 문법을 가지고 있지 않지만 [Set] (http://docs.oracle.com/javase/8/docs/api/java/)를 사용할 수 있습니다. util/Set.html). – ajb

답변

4

관심있는 값 중 List을 정의하고 필요한 값이 목록에 있는지 확인할 수 있습니다.

List<String> fieldValues = Arrays.asList("Name","ID","password","email"); 
if(fieldValues.contains(fieldName)) { 

} 

하나 라이너 :if(Arrays.asList("Name","ID","password","email").contains(fieldName)) { }

String 어떤지를 확인하기 위해 ==를 사용하지 마십시오.

+1

이것이 최고의 단일 회선 해결 방법이라고 생각합니다. . –

0

자주 변경되지 않는 일부 정적 속성을 사용하는 경우. 이러한 속성을 동일한 키와 값으로지도에 채워야한다고 제안합니다.

if(someMap.get(fieldName)!=null) 
{ 
    //do something 
} 
else 
{ 
    //do something else 
} 

또한 일부 파일에 이러한 속성을 작성하고 프로그램 시작시 속성 클래스를 사용하여로드하고 사용할 수 있습니다.

1

먼저 가장 중요한 것은이 코드가 잘못되었습니다.

if ("Name" == fieldName || "ID" == fieldName 
      || "password" == fieldName || "email" == fieldName) { 

==을 사용하면 문자열을 비교하는 것이 거의 항상 부정확합니다.

는 테스트를 작성하는 가장 효율적인 (올바른) 방법입니다했다 가졌 :

switch (fieldName) { 
case "Name": case "ID": case "password": case "email": 
    // do something 
    break; 
default: 
    // do something else 
} 

이 컴파일러가 가장 효율적인 방법입니다 생각하면 해시 세트가 장면 비하인드 사용하지만,해야 세트는 한 번만 구성됩니다. 보다 간결한 솔루션을 사용하면 테스트를 할 때마다 임시 세트/목록을 나타내는 데이터 구조를 만들고 폐기 할 가능성이 높습니다.

0

알고있는 방법이 없습니다. 함수를 정의하고 사용할 수 있습니다. 아래 코드를 참조하십시오 :

boolean stringInArray(String src, String[] strArray) { 
    if (strArray == null || src == null) 
    return false; 
    for (int i = 0; i < strArray.length; i++) { 
    if (src.equals(strArray[i])) 
     return true; 
    } 
    return false; 
} 

// Print false 
System.out.println(stringInArray("John", 
    new String[] { "Name", "ID", "password", "email"})); 

// Print true 
System.out.println(stringInArray("ID", 
    new String[] { "Name", "ID", "password", "email"}));