Formulir pendek untuk pernyataan Java if

201

Saya tahu ada cara untuk menulis ifpernyataan Java dalam bentuk singkat.

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

Adakah yang tahu cara menulis formulir pendek untuk 5 baris di atas menjadi satu baris?

Makky
sumber
5
operator ternary google di java :)
CoolBeans
2
Saya berasumsi bahwa iflogika Anda salah.
NPE
7
if (city.getName()!=null){name = city.getName();}else{name="N/A"}
Steve Kuo
9
@SteveKuo Ada tiga ruang yang dapat Anda hapus. ;)
Peter Lawrey
2
if (city.getName()!= null) name = city.getName(); else name="N/A";
Anton Dozortsev

Jawaban:

424

Gunakan operator ternary:

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

Saya pikir Anda memiliki kondisi mundur - jika itu nol, Anda ingin nilainya menjadi "N / A".

Bagaimana jika kota itu nol? Kode Anda * mengenai tempat tidur dalam kasus itu. Saya akan menambahkan cek lain:

name = ((city == null) || (city.getName() == null) ? "N/A" : city.getName());
Duffymo
sumber
12
+1, meskipun Anda memiliki tanda kurung yang berlebihan. Saya akan menulis: name = city.getName() == null ? "N/A" : city.getName();
Andres F.
20
Masalah gaya dan selera: Saya ingin memperjelas pengelompokan klausa boolean.
duffymo
4
Apapun - Saya menggunakan teorema DeMorgan dan mendapatkan apa yang Anda butuhkan. Tidak perlu diedit, selama Anda mengekspresikan logika dengan benar.
duffymo
2
FYI kurung luar tidak perlu. Anda bisa melakukannyaname = city.getName()==null ? "N/A" : city.getName()
Steve Kuo
4
Tidak akan String cityName = city.getName();membuang NullPointerExceptionjika city == null? Karena itu saya akan mengatakan solusi tengah Anda pasti yang terbaik (PS dan saya menyetujui tanda kurung yang 'tidak perlu'! Orang-orang perlu mengingat bahwa 99% pengkodean berkomunikasi dengan orang lain (dan diri Anda di masa depan), bukan kompiler - jika tidak kita akan menggunakan c!)
Alex
33

Untuk menghindari menelepon .getName()dua kali saya akan menggunakan

name = city.getName();
if (name == null) name = "N/A";
Peter Lawrey
sumber
2
Dalam sistem multi-pengguna dengan kota yang bisa berubah, mungkin ada intervensi city.setName(null). Jawaban Anda dengan rapi mengatasinya.
emory
27

Cara untuk melakukannya adalah dengan operator ternary:

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

Namun, saya yakin Anda memiliki kesalahan ketik pada kode Anda di atas, dan Anda bermaksud mengatakan:

if (city.getName() != null) ...
Sam Goldberg
sumber
23

Itu? : operator di Jawa

Di Jawa Anda dapat menulis:

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

Menetapkan variabel tunggal ke salah satu dari dua status berdasarkan satu kondisi adalah penggunaan yang umum jika-selain itu jalan pintas telah dirancang untuknya, operator kondisional,?:. Menggunakan operator kondisional, Anda dapat menulis ulang contoh di atas dalam satu baris seperti ini:

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

(a> b)? a: b; adalah ekspresi yang mengembalikan salah satu dari dua nilai, a atau b. Kondisi, (a> b), diuji. Jika benar nilai pertama, a, dikembalikan. Jika salah, nilai kedua, b, dikembalikan. Nilai mana pun yang dikembalikan bergantung pada tes bersyarat, a> b. Kondisi dapat berupa ekspresi apa pun yang mengembalikan nilai boolean.

Reza Baradaran Gazorisangi
sumber
21

dalam java 8:

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

Saya selalu lupa bagaimana cara menggunakan ?: operator ternary . Jawaban tambahan ini adalah pengingat cepat. Ini adalah singkatan untuk if-then-else.

myVariable = (testCondition) ? someValue : anotherValue;

dimana

  • () memegang if
  • ? cara then
  • : cara else

Itu sama dengan

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

Anda dapat menulis if, else if, elsepernyataan dalam bentuk singkat. Sebagai contoh:

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

Ini adalah bentuk singkat dari:

Boolean isCapital = city.isCapital();
String isCapitalName;
if(isCapital == null) {
    isCapitalName = "";
} else if(isCapital) {
    isCapitalName = "Capital";
} else {
    isCapitalName = "City";
}
OctopusSD
sumber
1
Ini tidak diminta jadi masih -1.
Makky
8

1. Anda dapat menghapus tanda kurung dan jeda baris .

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

2. Anda dapat menggunakan : operator di java.

Sintaksis:

Variable = Condition ? BlockTrue : BlockElse;

Jadi dalam kode Anda, Anda dapat melakukan seperti ini:

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

3. Tetapkan hasil kondisi untuk Boolean

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

TAMBAHAN: untuk penasaran

Dalam beberapa bahasa berbasis di JAVA like Groovy, Anda dapat menggunakan sintaks ini:

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

Operator ?:menetapkan nilai yang dikembalikan dari variabel yang kami minta. Dalam hal ini, nilai city.getName()jika tidak null.

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

pertama-tama kondisinya (city.getName() == null)diperiksa. Jika ya, maka "N/A"ditugaskan untuk nama atau hanya name="N/A"atau nilai dari city.getName()ditugaskan untuk nama, yaituname=city.getName() .

Hal-hal untuk dilihat di sini:

  1. kondisi dalam tanda kurung diikuti oleh tanda tanya. Itu sebabnya saya menulis (city.getName() == null)?. Di sini tanda tanya tepat setelah kondisi. Mudah dilihat / dibaca / bahkan ditebak!
  2. nilai kiri titik dua ( :) dan nilai kanan titik dua (a) nilai kiri titik dua diberikan ketika kondisi benar, jika tidak nilai kanan titik dua ditugaskan ke variabel.

inilah referensi: http://www.cafeaulait.org/course/week2/43.html

Arafe Zawad Sajid
sumber
3

di sini adalah satu kode baris

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

di sini adalah contoh cara kerjanya, jalankan kode di bawah ini dalam file js dan pahami hasilnya. Ini ("Data" != null)adalah kondisi seperti yang kita lakukan dalam keadaan normal if()dan "Data"merupakan pernyataan ketika kondisi ini menjadi kenyataan. ini " : "bertindak seperti yang lain dan "N/A"merupakan pernyataan untuk kondisi lain. Semoga ini bisa membantu Anda memahami logika.

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

console.log(name);

Waqas Qayum
sumber
2

Gunakan org.apache.commons.lang3.StringUtils:

name = StringUtils.defaultString(city.getName(), "N/A");
Paul Rambags
sumber
2

Sederhana & jelas:

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

versi panjang:

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

atau bagaimana saya menggunakannya agar menjadi jelas bagi pembaca kode lainnya:

 String manType = "poor";
    if (hasMoney())
        manType = "rich";
Vasile Doe
sumber
0

Anda dapat menggunakan operator ternary di java.

Sintaksis:

Condition ? Block 1 : Block 2

Jadi dalam kode Anda, Anda dapat melakukan seperti ini,

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

Untuk info lebih lanjut, Anda dapat merujuk sumber ini .

Siwa
sumber
4
Ini adalah pertanyaan 6 tahun dan telah menerima jawaban. Jawaban Anda tidak memberikan sesuatu yang baru -1
Makky
-3
name = city.getName()!=null?city.getName():"N/A"
Bayangan
sumber
4
Alih-alih hanya memposting beberapa kode Anda akan membantu OP lebih banyak dengan menjelaskan tekniknya. Bagaimana cara kerjanya, mengapa itu bekerja?
Zabuzard
1
Meletakkan spasi di sekitar operator Anda membuatnya lebih mudah dibaca & dipelihara.
geowar