Java if 문의 약식


201

Java if문을 짧은 형식으로 작성하는 방법이 있다는 것을 알고 있습니다 .

if (city.getName() != null) {
    name = city.getName();
} else {
    name="N/A";
}

누구든지 위의 5 줄에 대한 짧은 양식을 한 줄에 쓰는 방법을 알고 있습니까?


5
자바 구글 구글 삼항 연산자 :)
CoolBeans

2
나는 당신이 당신의 if논리를 잘못 알고 있다고 가정합니다 .
NPE

7
if (city.getName()!=null){name = city.getName();}else{name="N/A"}
Steve Kuo

9
@SteveKuo 세 개의 공백을 제거 할 수 있습니다. ;)
Peter Lawrey

2
if (city.getName()!= null) name = city.getName(); else name="N/A";
Anton Dozortsev

답변:


423

삼항 연산자를 사용하십시오.

name = ((city.getName() == null) ? "N/A" : city.getName());

조건이 거꾸로 있다고 생각합니다. null이면 값이 "N / A"가되기를 원합니다.

도시가 null이면 어떻게 되나요? 이 경우 코드가 침대에 닿습니다. 다른 수표를 추가하고 싶습니다.

name = ((city == null) || (city.getName() == null) ? "N/A" : city.getName());

12
괄호가 중복되어 있지만 +1입니다. 나는 다음과 같이 썼을 것이다 : name = city.getName() == null ? "N/A" : city.getName();
Andres F.

20
스타일과 맛의 문제 : 부울 절을 명확하게 그룹화하고 싶습니다.
duffymo

4
무엇이든-나는 DeMorgan의 정리를 사용하여 필요한 것을 얻었습니다. 논리를 올바르게 표현하는 한 편집 할 필요가 없습니다.
duffymo

2
참고로 괄호는 불필요합니다. 당신은 할 수 있습니다name = city.getName()==null ? "N/A" : city.getName()
Steve Kuo

4
하지 않음 String cityName = city.getName();를 던질 NullPointerException경우 city == null? 따라서 중간 솔루션이 확실히 최고라고 말하고 싶습니다 (PS와 나는 '필요하지 않은'괄호를 승인합니다! 사람들은 코딩의 99 %가 컴파일러가 아닌 다른 사람들 (및 미래의 자기 자신)과 의사 소통하고 있음을 기억해야합니다. 우리는 c를 사용할 것이다!)
Alex

32

.getName()두 번 전화를 피하려면

name = city.getName();
if (name == null) name = "N/A";

2
도시가 변할 수있는 다중 사용자 시스템에서는 개입 할 수 있습니다 city.setName(null). 당신의 대답은 깔끔하게 처리합니다.
emory

27

이를 수행하는 방법은 삼항 연산자를 사용하는 것입니다.

name = city.getName() == null ? city.getName() : "N/A"

그러나 위 코드에서 오타가 있다고 생각합니다.

if (city.getName() != null) ...

23

? : Java 연산자

Java에서는 다음과 같이 작성할 수 있습니다.

if (a > b) {
  max = a;
}
else {
  max = b;
}

단일 조건을 기반으로 단일 변수를 두 가지 상태 중 하나로 설정하는 것은 조건부 연산자? :에 대한 바로 가기가 고안된 if-else의 일반적인 사용입니다. 조건부 연산자를 사용하면 위의 예제를 다음과 같이 한 줄로 다시 작성할 수 있습니다.

max = (a > b) ? a : b;

(a> b)? a : b; a 또는 b의 두 값 중 하나를 리턴하는 표현식입니다. 조건 (a> b)이 테스트됩니다. 참이면 첫 번째 값 a가 반환됩니다. False이면 두 번째 값 b가 반환됩니다. 반환되는 값은 조건부 테스트 a> b에 따라 다릅니다. 조건은 부울 값을 리턴하는 표현식 일 수 있습니다.


21

자바 8 :

name = Optional.ofNullable(city.getName()).orElse("N/A")

18

나는 항상 ?: 삼항 연산자 를 사용하는 방법을 잊고 있습니다 . 이 보충 답변은 빠른 알림입니다. 의 약칭입니다 if-then-else.

myVariable = (testCondition) ? someValue : anotherValue;

어디

  • () 보유 if
  • ? 방법 then
  • : 방법 else

와 동일

if (testCondition) {
    myVariable = someValue;
} else {
    myVariable = anotherValue;
}

10

if, else if, else짧은 형식으로 진술을 작성할 수 있습니다 . 예를 들면 다음과 같습니다.

Boolean isCapital = city.isCapital(); //Object Boolean (not boolean)
String isCapitalName = isCapital == null ? "" : isCapital ? "Capital" : "City";      

이것은 짧은 형식입니다.

Boolean isCapital = city.isCapital();
String isCapitalName;
if(isCapital == null) {
    isCapitalName = "";
} else if(isCapital) {
    isCapitalName = "Capital";
} else {
    isCapitalName = "City";
}

1
이것은 여전히 ​​묻지 않았습니다 -1.
Makky

8

1. 대괄호줄 바꿈을 제거 할 수 있습니다 .

if (city.getName() != null) name = city.getName(); else name = "N/A";

2. 자바에서 ? : 연산자를 사용할 수 있습니다 .

통사론:

Variable = Condition ? BlockTrue : BlockElse;

따라서 코드에서 다음과 같이 할 수 있습니다.

name = city.getName() == null ? "N/A" : city.getName();

3. 불리언에 대한 조건 결과 할당

boolean hasName = city.getName() != null;

엑스트라 : 호기심

JAVAlike 기반의 일부 언어에서는 Groovy다음 구문을 사용할 수 있습니다.

name = city.getName() ?: "N/A";

연산자 ?:는 요청한 변수에서 반환 된 값을 할당합니다. 이 경우, 값 city.getName()이 아니라면 null.


5
name = (city.getName() != null) ? city.getName() : "N/A";

3
name = ( (city.getName() == null)? "N/A" : city.getName() );

먼저 상태 (city.getName() == null)가 점검됩니다. 예인 경우 "N/A"이름에 지정되거나 단순히 name="N/A"또는 그 밖의 값 city.getName()이 이름에 지정됩니다. 즉name=city.getName() .

여기서 살펴볼 것들 :

  1. 조건은 괄호 안에 있고 물음표가옵니다. 그게 내가 쓰는 이유 (city.getName() == null)?입니다. 여기서 물음표는 조건 바로 뒤에 있습니다. 보고 / 읽기 / 추측하기도 쉽습니다!
  2. 콜론 왼쪽 값 ( :) 및 콜론 오른쪽 값 (a) 조건이 참이면 콜론 왼쪽 값이 할당되고, 그렇지 않으면 콜론 오른쪽 값이 변수에 할당됩니다.

여기 참조가 있습니다 : http://www.cafeaulait.org/course/week2/43.html


3

여기 한 줄의 코드가 있습니다

name = (city.getName() != null) ? city.getName() : "N/A";

다음은 작동 방식의 예입니다. js 파일의 코드 아래에서 실행하고 결과를 이해하십시오. 이것은 ("Data" != null)우리가 정상에서와 조건 if()"Data"이 조건이 참이되었을 때 문입니다. 이것은 " : "다른 것으로 행동하고 "N/A"다른 조건에 대한 진술입니다. 이것이 논리를 이해하는 데 도움이되기를 바랍니다.

name = ("Data" != null) ? "Data" : "N/A";

console.log(name);


2

org.apache.commons.lang3.StringUtils를 사용하십시오.

name = StringUtils.defaultString(city.getName(), "N/A");

2

간단하고 명확한 :

String manType = hasMoney() ? "rich" : "poor";

긴 버전 :

      String manType;
    if (hasMoney()) {
        manType = "rich";
    } else {
        manType = "poor";
    }

또는 다른 코드 리더에게 명확하게 사용하는 방법 :

 String manType = "poor";
    if (hasMoney())
        manType = "rich";

0

자바에서 삼항 연산자를 사용할 수 있습니다.

통사론:

Condition ? Block 1 : Block 2

따라서 코드에서 다음과 같이 할 수 있습니다.

name = ((city.getName() == null) ? "N/A" : city.getName());

자세한 내용은 리소스를 참조하십시오 .


4
이것은 6 살짜리 질문이며 대답을 받아 들였습니다. 귀하의 답변은 새로운 것을 제공하지 않습니다 -1
Makky

-3
name = city.getName()!=null?city.getName():"N/A"

4
코드를 게시하는 대신 기술을 설명하여 OP를 더 많이 도울 수 있습니다. 어떻게 작동하고 왜 작동합니까?
Zabuzard

1
운영자 주위에 공백을두면 훨씬 쉽게 읽고 유지 관리 할 수 ​​있습니다.
geowar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.