int v = 0;
for (v; v<2; v++) {
...
}
Mengapa ini tidak diizinkan di Jawa?
Mengapa kita harus mendeklarasikan variabel v
dalam inisialisasi loop? Saya tahu ini bukan pernyataan jika saya melakukannya seperti itu tetapi mengapa Java tidak mengizinkan hal di atas?
for(;;)
v
tidak diizinkan karena itu bukan pernyataan: itu adalah alasan yang sama bahwa Anda tidak dapat menulisv;
sendiri di tempat lain.for
loop yang disempurnakan .Jawaban:
Jika
v
dideklarasikan sebelum loop, Anda harus membiarkan bagian pertama dari pernyataan for kosong:Tidak ada artinya hanya menulis
v;
.sumber
Deklarasi loop Anda valid jika Anda menghapus extraneous
v
dalam deklarasi (dengan asumsiv
dideklarasikan sebelumnya):Ubah ke
for(; v < 2; v++)
Ketiga pengubah dalam
for
loop tradisional adalah opsional di Jawa.Contoh alternatif:
Di bawah ini sama dengan
while (true)
loop:Menambahkan peningkatan tambahan:
Menambahkan kondisi tambahan untuk mengakhiri loop:
Mendeklarasikan beberapa variabel tipe yang sama :
Dan jelas Anda dapat mencampur dan mencocokkan semua ini seperti yang Anda inginkan, sepenuhnya meninggalkan yang mana yang Anda inginkan.
sumber
Menurut doc java
Berarti Anda dapat membuat
for
lingkaran dan membiarkan beberapa dari 3 kosong. Salah satu opsi menyatakanint v
sebelum loop:sumber
Anda tidak harus mendeklarasikan variabel dalam
ForInit
.Seperti yang telah ditunjukkan orang lain, Anda dapat menghilangkan
ForInit
; tetapi Anda juga dapat menggunakan daftar ekspresi pernyataan di sana.Misalnya, Anda bisa membuat instance kelas baru, memanggil metode, dan menetapkan / menambahkan / mengurangi variabel:
(Contoh ini tidak masuk akal, tetapi legal)
Namun, Anda tidak dapat mencampur ekspresi pernyataan ini dengan deklarasi variabel lokal.
sumber
Anda tidak membutuhkannya untuk
for
loop yang disempurnakan .sumber
int w = 0;
di TV;
untuk (v; v <2; v ++) {
} Anda telah mendeklarasikan v sebelum loop tetapi Anda kembali menggunakan tanpa inisialisasi.
jika Anda menggunakan w yang sudah dinyatakan dan diinisialisasi sebelumnya maka tidak akan ada masalah. seperti kode di bawah ini,
untuk (; w <2; w ++) {
}
sumber