Video: Technology Stacks - Computer Science for Business Leaders 2016 2024
Dalam penyenaraian kod Java ini, Kaedah payOneEmployee menggambarkan beberapa helah berguna untuk membaca data. Khususnya, setiap pengimbas yang anda buat mempunyai kaedah nextline. (Anda mungkin tidak menggunakan kaedah nextLine ini, tetapi kaedahnya tetap tersedia.)
Apabila anda memanggil kaedah nextline pengimbas, kaedah ini dapat merangkumi segala-galanya hingga akhir baris teks semasa. Dalam senarai ini, panggilan ke nextline boleh membaca keseluruhan baris dari EmployeeInfo. fail txt. (Dalam program yang lain, panggilan seterusnyaMesinari boleh membaca semua jenis pengguna pada papan kekunci sehingga menekan kekunci Enter.)
java import. util. Pengimbas; import java. io. Fail; import java. io. IOException; public class DoPayroll {public static void main (String args []) melemparkan IOException {Scanner diskScanner = Scanner baru (File baru ("EmployeeInfo txt")); untuk (int empNum = 1; empNum <= 3; empNum ++) {payOneEmployee (diskScanner);} diskScanner. close ();} statoid void payOneEmployee (Pengimbas aScanner) {Employee anEmployee = Employee baru (); seorang pekerja. setName (aScanner. nextLine ()); seorang pekerja. setJobTitle (aScanner. nextLine ()); seorang pekerja. cutCheck (aScanner. nextDouble ()); aScanner. nextLine ();}}
Perhatikan pilihan kata-kata yang berhati-hati: nextLine membaca segala-galanya hingga akhir baris semasa. Malangnya, apa yang dimaksudkan untuk membaca sehingga akhir baris semasa tidak selalu apa yang anda fikir ia bermakna. Intermingling nextInt, nextDouble, dan nextLine calls boleh berantakan. Anda perlu menonton apa yang anda lakukan dan semak output program anda dengan berhati-hati.
Untuk memahami semua ini, anda perlu menyedari menyakitkan fail baris data. Fikirkan garis pemisah sebagai watak tambahan, tersekat antara satu baris teks dan seterusnya. Kemudian bayangkan bahawa memanggil nextLine bermakna membaca semua perkara sehingga dan termasuk baris seterusnya.
Sekarang perhatikan angka ini.
-
Jika satu panggilan ke seterusnyaLine membaca Barry Burd [LineBreak], panggilan berikutnya kepada nextLine membaca Ketua Pegawai Eksekutif [LineBreak].
-
Jika satu panggilan ke nextDouble dapat membaca nombor 5000. 00, panggilan seterusnya ke NextLine akan membaca [LineBreak] yang datang dengan segera selepas nombor 5000. 00. (Itu semua seterusnya akan dibaca - [LineBreak] dan tidak ada lagi.)
-
Jika panggilan ke nextLine membaca [LineBreak] selepas nombor 5000. 00, panggilan berikutnya ke seterusnyaLine membaca Harriet Ritter [LineBreak].
Jadi selepas membaca nombor 5000. 00, anda perlu dua panggilan ke nextline untuk meremukkan nama Harriet Ritter. Kesilapan yang biasanya anda buat adalah melupakan yang pertama dari kedua-dua panggilan itu.
Lihat sekali lagi pada fail dalam gambar itu. Untuk kod seksyen ini berfungsi dengan betul, anda mesti mempunyai pemecah garis selepas 10000 terakhir. 00. Jika anda tidak, panggilan terakhir ke nextLine menjadikan kemalangan dan pembakaran program anda. Mesej ralat membaca NoSuchElementException: Tiada baris dijumpai.
Anda mungkin terkejut dengan bilangan kebiasaan yang anda dapati dalam setiap kaedah pengimbasan bahasa pengaturcaraan. Sebagai contoh, nextline pertama yang dibaca dari fail dalam angka memakan Barry Burd [LineBreak] dari fail tersebut.
Tetapi panggilan seterusnya seterusnya menyampaikan Barry Burd (tanpa sebarang rehat garis) ke kod yang sedang berjalan. Jadi nextLine mencari baris istirahat, dan kemudian nextLine kehilangan baris istirahat. Ya, ini adalah perkara yang halus. Dan tidak, titik halus ini tidak menimbulkan masalah kepada sesiapa pun.
Sekiranya perniagaan ini mengenai NextDouble dan nextLine akan mengelirukan anda, sila jangan menyalahkan Java. Menggabungkan panggilan input adalah kerja yang halus dalam mana-mana bahasa pengaturcaraan komputer. Dan perkara yang benar-benar jahat ialah setiap bahasa pengaturcaraan mendekatkan masalah sedikit berbeza.
Apa yang anda ketahui mengenai nextLine di Java membantu anda memahami isu-isu apabila anda mengenali C ++ atau Visual Basic, tetapi ia tidak memberitahu anda semua butiran. Butiran setiap bahasa adalah unik untuk bahasa itu.