Apa kata kunci "lanjutkan" dan bagaimana cara kerjanya di Jawa?

302

Saya melihat kata kunci ini untuk pertama kalinya dan saya bertanya-tanya apakah seseorang dapat menjelaskan kepada saya apa fungsinya.

  • Apa continuekata kuncinya?
  • Bagaimana cara kerjanya?
  • Kapan itu digunakan?
faceless1_14
sumber

Jawaban:

416

Sebuah continuepernyataan tanpa label akan kembali mengeksekusi-dari kondisi terdalam whileatau dolingkaran, dan dari ekspresi update dari terdalam forlingkaran. Ini sering digunakan untuk menghentikan proses loop lebih awal dan dengan demikian menghindari ifpernyataan yang bersarang dalam . Pada contoh berikut continueakan mendapatkan baris berikutnya, tanpa memproses pernyataan berikut dalam loop.

while (getNext(line)) {
  if (line.isEmpty() || line.isComment())
    continue;
  // More code here
}

Dengan label, continueakan mengeksekusi kembali dari loop dengan label yang sesuai, daripada loop paling dalam. Ini dapat digunakan untuk menghindari loop yang sangat bersarang, atau hanya untuk kejelasan.

Terkadang continuejuga digunakan sebagai pengganti untuk membuat lingkaran kosong lebih jelas.

for (count = 0; foo.moreData(); count++)
  continue;

Pernyataan yang sama tanpa label juga ada di C dan C ++. Setara dalam Perl adalah next.

Jenis aliran kontrol ini tidak disarankan, tetapi jika Anda memilihnya, Anda juga dapat menggunakan continueuntuk mensimulasikan bentuk terbatas goto. Dalam contoh berikut ini continueakan menjalankan kembali for (;;)loop kosong .

aLoopName: for (;;) {
  // ...
  while (someCondition)
  // ...
    if (otherCondition)
      continue aLoopName;
Diomidis Spinellis
sumber
513

continuesemacam itu goto. Apakah Anda kenal break? Sebaliknya, lebih mudah untuk memikirkannya:

  • break mengakhiri loop (melompat ke kode di bawahnya).

  • continue menghentikan sisa pemrosesan kode dalam loop untuk iterasi saat ini, tetapi melanjutkan loop.

Dustin
sumber
1
contoh yang baik untuk istirahat dan melanjutkan, saya pikir itu sama sebelum>. <
yfsx
Mustahil untuk tidak membuatnya menjadi sempurna 500 sempurna! +1
topi
100

Mari kita lihat sebuah contoh:

int sum = 0;
for(int i = 1; i <= 100 ; i++){
    if(i % 2 == 0)
         continue;
    sum += i;
}

Ini akan mendapatkan jumlah hanya angka ganjil dari 1 hingga 100.

Gant
sumber
28

Jika Anda menganggap tubuh loop sebagai subrutin, continueitu seperti return. Kata kunci yang sama ada di C, dan melayani tujuan yang sama. Inilah contoh yang dibuat-buat:

for(int i=0; i < 10; ++i) {
  if (i % 2 == 0) {
    continue;
  }
  System.out.println(i);
}

Ini hanya akan mencetak angka ganjil.

Vineet
sumber
16

Secara umum, saya melihat continue(dan break) sebagai peringatan bahwa kode mungkin menggunakan beberapa refactoring, terutama jika deklarasi loop whileatau fortidak segera terlihat. Hal yang sama berlaku untuk returndi tengah-tengah suatu metode, tetapi untuk alasan yang sedikit berbeda.

Seperti yang telah dikatakan orang lain, continuebergerak ke iterasi loop berikutnya, sementara breakbergerak keluar dari loop penutup.

Ini bisa berupa bom waktu pemeliharaan karena tidak ada tautan langsung antara continue/ breakdan loop yang diteruskan / dihancurkan selain dari konteks; tambahkan loop dalam atau pindahkan "nyali" loop ke dalam metode terpisah dan Anda memiliki efek tersembunyi dari continue/ breakgagal.

IMHO, yang terbaik untuk menggunakannya sebagai ukuran upaya terakhir, dan kemudian untuk memastikan penggunaannya dikelompokkan bersama pada awal atau akhir loop sehingga pengembang berikutnya dapat melihat "batas" dari loop dalam satu layar .

continue,, breakdan return(selain One True Return pada akhir metode Anda) semuanya termasuk dalam kategori umum "GOTO tersembunyi". Mereka menempatkan loop dan kontrol fungsi di tempat yang tak terduga, yang kemudian akhirnya menyebabkan bug.

Tom Dibble
sumber
Saya tertarik pada alasan mengapa pengembalian itu buruk. Saya sudah memiliki perasaan bahwa pengembalian itu buruk karena Scala tidak mendorong pengembalian .
Jus12
1
Di sisi lain, mengizinkan metode untuk kembali dari loop yang sangat bersarang mungkin merupakan cara termudah, paling mudah dibaca, dan paling masuk akal untuk melakukan sesuatu, daripada membuat variabel tambahan hanya untuk membuat loop keluar terlihat lebih bersih.
David R Tribble
5

"Lanjutkan" di Jawa berarti pergi ke akhir dari loop saat ini, berarti: jika kompilator melihat terus dalam loop itu akan pergi ke iterasi berikutnya

Contoh: Ini adalah kode untuk mencetak angka ganjil dari 1 hingga 10

kompiler akan mengabaikan kode cetak setiap kali terlihat terus bergerak ke iterasi berikutnya

for (int i = 0; i < 10; i++) { 
    if (i%2 == 0) continue;    
    System.out.println(i+"");
}

Ibrahim Hout
sumber
4

Seperti yang sudah disebutkan continueakan melewatkan pemrosesan kode di bawahnya dan sampai akhir loop. Kemudian, Anda dipindahkan ke kondisi loop dan menjalankan iterasi berikutnya jika kondisi ini masih berlaku (atau jika ada bendera, dengan kondisi loop yang dilambangkan).

Harus disorot bahwa jika do - whileAnda dipindahkan ke kondisi di bagian bawah setelah a continue, bukan di awal loop.

Inilah sebabnya mengapa banyak orang gagal menjawab dengan benar apa yang akan dihasilkan oleh kode berikut.

    Random r = new Random();
    Set<Integer> aSet= new HashSet<Integer>();
    int anInt;
    do {
        anInt = r.nextInt(10);
        if (anInt % 2 == 0)
            continue;
        System.out.println(anInt);
    } while (aSet.add(anInt));
    System.out.println(aSet);

* Jika jawaban Anda aSethanya 100% berisi angka ganjil ... Anda salah!

Kostas Chalkias
sumber
4

Lanjutkan adalah kata kunci di Jawa & digunakan untuk melewati iterasi saat ini.

Misalkan Anda ingin mencetak semua angka ganjil dari 1 hingga 100

public class Main {

    public static void main(String args[]) {

    //Program to print all odd numbers from 1 to 100

        for(int i=1 ; i<=100 ; i++) {
            if(i % 2 == 0) {
                continue;
            }
            System.out.println(i);
        }

    }
}

melanjutkan pernyataan dalam program di atas hanya melewatkan iterasi ketika saya genap dan mencetak nilai i ketika itu ganjil.

Lanjutkan pernyataan hanya membawa Anda keluar dari loop tanpa menjalankan pernyataan yang tersisa di dalam loop dan memicu iterasi berikutnya.

Akshay
sumber
3

Pertimbangkan kondisi If Else. Pernyataan lanjutan mengeksekusi apa yang ada dalam kondisi dan keluar dari kondisi yaitu melompat ke iterasi atau kondisi berikutnya. Tapi sebuah Break meninggalkan loop. Pertimbangkan Program berikut. '

public class ContinueBreak {
    public static void main(String[] args) {
        String[] table={"aa","bb","cc","dd"};
        for(String ss:table){
            if("bb".equals(ss)){
                continue;
            }
            System.out.println(ss);
            if("cc".equals(ss)){
                break;
            }
        }
        System.out.println("Out of the loop.");
    }

}

Ini akan mencetak: aa cc Keluar dari loop.

Jika Anda menggunakan break sebagai pengganti continue (After if.), Itu hanya akan mencetak a dan keluar dari loop .

Jika kondisi "bb" sama dengan ss terpenuhi: Untuk Lanjut: Berlanjut ke iterasi berikutnya yaitu "cc". Equals (ss). For Break: Keluar dari loop dan mencetak "Out of the loop."

phanindravarma
sumber
2
Cukup yakin itu juga akan mencetak cc sejak "cc"! = "Bb" dan pernyataan cetak sebelumbreak
Ted Delezene
2

Aku agak terlambat ke pesta, tapi ...

Perlu disebutkan bahwa continueini berguna untuk loop kosong di mana semua pekerjaan dilakukan dalam ekspresi kondisional yang mengendalikan loop. Sebagai contoh:

while ((buffer[i++] = readChar()) >= 0)
    continue;

Dalam hal ini, semua pekerjaan membaca karakter dan menambahkannya bufferdilakukan dalam ekspresi mengendalikan whileloop. The continuepernyataan berfungsi sebagai indikator visual bahwa loop tidak perlu tubuh.

Ini sedikit lebih jelas daripada yang setara:

while (...)
{ }

dan gaya pengkodean yang jelas lebih baik (dan lebih aman) daripada menggunakan pernyataan kosong seperti:

while (...)
    ;
David R Tribble
sumber
Saya setuju bahwa itu kode yang lebih bersih dan lebih mudah dibaca, tapi saya tidak yakin saya mengikuti argumen Anda tentang hal itu "lebih aman" daripada opsi lain, sementara (pernyataan); dibatasi langsung menggunakan titik koma.
axolotl
@Aokok - Ini lebih aman karena titik koma tunggal mudah hilang secara visual. Juga mudah untuk tidak sengaja keluar, yang akan membuat pernyataan berikutnya mengikuti whilemenjadi tubuh whileklausa, dan yang tidak akan terlihat jelas secara visual. Eksplisit continuejelas dan menyampaikan maksud bahwa pernyataan kosong tidak.
David R Tribble
Saya mengerti, jadi maksud Anda terutama dari perspektif desain. Itu masuk akal. Saya memiliki sesuatu yang mendasar dengan cara loop terstruktur dalam pikiran.
axolotl
1

Pada dasarnya di java, lanjutkan adalah pernyataan. Jadi pernyataan berlanjut biasanya digunakan dengan loop untuk melewati iterasi saat ini.

Untuk bagaimana dan kapan digunakan di java, lihat tautan di bawah ini. Itu sudah mendapat penjelasan dengan contoh.

https://www.flowerbrackets.com/continue-java-example/

Semoga ini bisa membantu !!

Siwa
sumber
0

continue harus berada di dalam satu lingkaran Jika tidak itu menunjukkan kesalahan di bawah ini:

Lanjutkan di luar loop

Kaveh Garshasp
sumber
0

Pernyataan lanjut digunakan dalam struktur kontrol loop ketika Anda harus segera melompat ke iterasi loop berikutnya.

Ini dapat digunakan dengan untuk loop atau while. Pernyataan Java berlanjut digunakan untuk melanjutkan loop. Ini melanjutkan aliran program saat ini dan melewatkan kode yang tersisa pada kondisi yang ditentukan.

Dalam hal loop batin, itu hanya melanjutkan loop batin.

Kita bisa menggunakan Java continue statement dalam semua jenis loop seperti untuk loop, while dan loop do-while.

sebagai contoh

class Example{
    public static void main(String args[]){
        System.out.println("Start");
        for(int i=0; i<10; i++){
            if(i==5){continue;}
            System.out.println("i : "+i);   
        }
        System.out.println("End.");
    }
}

keluaran:

Start
i : 0
i : 1
i : 2
i : 3
i : 4
i : 6
i : 7
i : 8
i : 9
End.

[nomor 5 dilewati]

Shashini Prabodha
sumber