Video: Sıfırdan Java 01 - İlk Ders ve İlk Program 2024
Bu Java kodu listesinde, payOneEmployee yöntemi, verileri okumak için bazı yararlı hileleri gösterir. Özellikle, oluşturduğunuz tüm tarayıcıların bir nextLine yöntemi vardır. (Bu nextLine yöntemini kullanmayabilirsiniz, ancak yöntem yine de kullanılabilir.)
Bir tarayıcının nextLine yöntemini çağırdığınızda, yöntem geçerli metnin sonuna kadar her şeyi yakalar. Bu listede, nextLine çağrısı, EmployeeInfo'dan bütün bir satırı okuyabilir. txt dosyası. (Başka bir programda, bir tarayıcının sonraki Hattı çağrısı, kullanıcının Enter tuşuna basıp tuş takımı üzerine yazdığı her şeyi okuyabilir.)
import java. util. Tarayıcı; import java. io. Dosya; import java. io. IOException; kamu sınıfı DoPayroll {public static void main (Dizge args []) IOException'u atar {Scanner diskScanner = yeni Tarayıcı (yeni Dosya ("EmployeeInfo. txt")); için (int empNum = 1; empNum <= 3; empNum ++) {payOneEmployee (diskScanner);} diskScanner. close ();} statik void payOneEmployee (Tarayıcı aScanner) {Çalışan anEmployee = yeni Çalışan (); bir işçi. setName (aScanner. nextLine ()); bir işçi. setJobTitle (aScanner. nextLine ()); bir işçi. cutCheck (aScanner. nextDouble ()); aScanner. nextLine ();}}
Dikkatli bir şekilde seçilen kelimelere dikkat edin: nextLine, her şeyi geçerli satırın sonuna kadar okur. Ne yazık ki, geçerli satırın sonuna kadar okumak ne anlama geldiğini, ne anlama geldiğini düşündüğünüz her zaman değil. NextInt, nextDouble ve nextLine çağrılarını birbirine karıştırmak dağınık olabilir. Ne yaptığınızı izlemek ve programınızın çıktısını dikkatlice kontrol etmek zorundasınız.
Bütün bunları anlamak için, bir veri dosyasının satır sonlarından farkında olmalısınız. Bir satır mıkrasını ek bir karakter olarak düşünün, bir metin satırı ile bir metin satırı arasına sıkışın. Sonra nextLine'in çağrılmasının, sonraki satır sonu da dahil olmak üzere her şeyi okumak anlamına geldiğini düşünün.
Şimdi bu şekle bir göz atın.
-
Eğer nextLine'e yapılan bir çağrı Barry Burd [LineBreak] 'i okursa, nextLine için yapılan daha sonraki çağrı CEO [LineBreak]' i okur.
-
Eğer nextDouble için yapılan bir çağrı 5000.00 sayısını okursa, nextLine'ye yapılan sonraki çağrı, 5000'den hemen sonra gelen [LineBreak] 'i okur. 00. (Bu, sonraki satırın tamamı okur - bir [LineBreak] ve başka bir şey yok.)
-
nextLine çağrısı, [LineBreak] sayısını 5000'den sonra okuursa, nextLine sonraki çağrı Harriet Ritter [LineBreak] 'i okur.
Yani 5000.00 numaralı okuduktan sonra, Harriet Ritter adını atmak için nextLine'ye iki çağrı yapmanız gerekir. Genellikle yaptığınız hata, o iki aramanın ilkini unutmaktır.
Şekilde dosyaya bir bakın. Bu bölümün doğru şekilde çalışması için, son 10000'den sonra bir satır sonuna sahip olmalısınız. 00. Eğer yapmazsanız, nextLine'ye yapılan son bir çağrı, programınızı çökertip yakar. Hata mesajı NoSuchElementException'u okur: No line found.
Her bir programlama dilinin tarama yöntemlerinde bulduğunuz tuhaf sayılara şaşırabilirsiniz. Örneğin, şekildeki dosyadan okuduğu ilk sonraki satır, Barry Burd'u [LineBreak] dosyadan çıkarıyor.
Ancak sonraki hat aramasında, çalışan koda Barry Burd (satır sonu olmadan) gönderilir. Yani nextLine bir satır sonu arar ve sonra nextLine satır sonunu kaybeder. Evet, bu çok zekice bir nokta. Ve hayır, bu zekice nokta hiç kimseye sorun yaratmaz.
nextDouble ve nextLine ile ilgili bu iş sizi şaşırttıysa, lütfen suçunu Java'ya yüklemeyin. Giriş çağrılarını karıştırmak, herhangi bir bilgisayar programlama dilinde hassas bir iştir. Ve gerçekten kötü olan şey her programlama dilinin soruna biraz farklı yaklaşmasıdır.
Java'da nextLine hakkında öğrendikleriniz, C ++ veya Visual Basic'i tanımış olduğunuzda sorunları anlamanıza yardımcı olur, ancak tüm ayrıntıları size anlatmaz. Her dilin ayrıntıları o dile özgüdür.