Dalam kode saya, program melakukan sesuatu tergantung pada teks yang dimasukkan oleh pengguna. Kode saya terlihat seperti:
switch (name) {
case text1: {
//blah
break;
}
case text2: {
//blah
break;
}
case text3: {
//blah
break;
}
case text4: {
//blah
break;
}
Namun, kode di dalam case text1
dan text4
sama. Karena itu saya bertanya-tanya apakah mungkin bagi saya untuk mengimplementasikan sesuatu seperti
case text1||text4: {
//blah
break;
}
Saya tahu bahwa ||
operator tidak akan bekerja dalam pernyataan kasus tetapi apakah ada hal serupa yang dapat saya gunakan.
java
switch-statement
Ankush
sumber
sumber
Jawaban:
Anda dapat menggunakan kedua
CASE
pernyataan sebagai berikut.LIHAT CONTOH INI: Contoh kode menghitung jumlah hari dalam bulan tertentu:
Ini adalah output dari kode:
GAGAL:
CONTOH KODE:
Ini adalah output dari kode:
Menggunakan Strings dalam pernyataan Switch
Output dari kode ini adalah 8.
DARI Java Docs
sumber
break
dasarnya ditambahkan dengan case block berikutnya yang secara visual di bawah ini, maka jatuh .Anda dapat melakukannya seperti:
sumber
The
case
nilai-nilai hanya codeless "goto" poin yang dapat berbagi titik masuk yang sama:Perhatikan bahwa kawat gigi itu berlebihan.
sumber
Kerjakan saja
sumber
Dengan integrasi JEP 325: Switch Expressions (Preview) di build akses awal JDK-12, orang sekarang dapat menggunakan bentuk baru label switch sebagai: -
atau untuk mengulangi demo dari salah satu jawaban , seperti: -
Ini adalah bagaimana Anda dapat mencobanya - Kompilasi fitur pratinjau JDK12 dengan Maven
sumber
Kurung tidak perlu. Kerjakan saja
Jika ada yang penasaran, ini disebut kasus fallthrough. Kemampuan untuk melakukan ini adalah alasan mengapa
break;
perlu untuk mengakhiri pernyataan kasus. Untuk informasi lebih lanjut, lihat artikel wikipedia http://en.wikipedia.org/wiki/Switch_statement .sumber
The
fallthrough
jawaban oleh orang lain adalah yang baik.Namun pendekatan lain akan mengekstraksi metode dari isi laporan kasus Anda dan kemudian memanggil metode yang sesuai dari setiap kasus.
Pada contoh di bawah ini, kedua case 'text1' dan case 'text4' berperilaku sama:
Saya pribadi menemukan gaya penulisan pernyataan kasus ini lebih dapat dipertahankan dan sedikit lebih mudah dibaca, terutama ketika metode yang Anda panggil memiliki nama deskriptif yang baik.
sumber
text1
dantext4
akan HAMPIR melakukan hal yang sama, terlepas dari perubahan di masa depan. Jika mereka harus selalu ditautkan, membuat perubahan dalam kasus untuktext1
(artinya mengubah metode yang dipanggil) akan membutuhkan perubahantext4
. Dalam hal ini jelas tidak lebih dapat dipertahankan. Itu tergantung situasi.Pendekatan fall through adalah yang terbaik yang kurasakan.
sumber
Kamu bisa memakai:
sumber
Nilai case hanyalah titik "goto" tanpa kode yang dapat berbagi titik masuk yang sama:
Perhatikan bahwa kawat gigi itu berlebihan.
sumber
JEP 354: Switch Expressions (Preview) di JDK-13 dan JEP 361: Switch Expressions (Standard) di JDK-14 akan memperluas pernyataan switch sehingga dapat digunakan sebagai ekspresi .
Sekarang kamu bisa:
case L ->
):Jadi demo dari salah satu jawaban mungkin terlihat seperti ini:
sumber