CodeGym /בלוג Java /Random-HE /שיטת סורק nextLine() ב-Java
John Squirrels
רָמָה
San Francisco

שיטת סורק nextLine() ב-Java

פורסם בקבוצה
Scanner , מחלקה בשפת התכנות Java שיכולה לנתח סוגים ומחרוזות פרימיטיביות באמצעות ביטויים רגולריים. שיטת הסורק nextLine() ב-Java מזיזה את הסורק הזה מעבר לשורה הנוכחית ומחזירה את הקלט שדילג עליו. עוד על nextLine() ועל סורק בהמשך מאמר זה.

בקצרה על כיתת סורק וכיצד זה עובד

באופן גס, מחלקת java.util.Scanner מאפשרת לך לקרוא קלט ממקורות שונים, כולל הקונסולה. זה באמת נראה דומה לסורק קלאסי. למכשיר החומרה הזה יש ארכיטקטורה מסובכת, אבל זה די פשוט לתאר את עבודתו. הסורק קורא תאריך שמשתמש שם עליו, כגון ניירות ושומר את הנתונים בזיכרון כמו תמונה או קובץ PDF. סורק Java, ממש כמו סורק אמיתי, קורא נתונים מהמקור שאתה מציין עבורו. לדוגמה, ממחרוזת, מקובץ, ממסוף. אז הוא מזהה את המידע הזה ומעבד אותו לפי הצורך. לדוגמה, התוכנית מבקשת להזין כמה נתונים מהמסוף וקוראת אותם או רוצה לקרוא אותם מקובץ. עבור פעולה זו, לסורק יש מספר שיטות בשילוב המילה "הבא". כגון next() , nextLine() , nextInt() , nextDouble() .

שיטת nextLine()

כפי שאמרנו לעיל, האובייקט של הסורק מפצל את הקלט לאסימונים באמצעות תבנית המפריד, רווח לבן כברירת מחדל, אך ניתן להחליף אותו במחרוזת ( java.lang.String ) או ביטוי רגולרי ( java.util.regex. תבנית ). לאחר מכן ניתן להמיר את האסימונים המתקבלים לערכים מסוגים שונים באמצעות שיטות הבאות השונות. שיטת סורק nextLine() ב-Java מקדמת את הסורק מעבר לשורה הנוכחית ומחזירה את הקלט שדילג עליו. General next() מוצא ומחזיר את האסימון המלא הבא מהסורק הזה. שיטת nextLine() ממשיכה לחפש בקלט עבור מפריד שורות, כך שהיא עשויה לאחסן את כל הקלט המחפש שורה לדלג עליה אם אין מפרידי שורות. שיטה זו זורקת את החריגים הבאים:
  • NoSuchElementException: זורק אם לא נמצא קו
  • IllegalStateException: זורק אם הסורק הזה סגור

דוגמה NextLine().

נניח שאנו רוצים שהמשתמש יזין כל מילה או ביטוי בקונסולה, ונוכל להראות לו איזו מילה או ביטוי הוא הזין.
import java.util.Scanner;
//…scanner.nextLine() example
public class ScannerTest {
   public static void main(String[] args) {
       Scanner scan = new Scanner(System.in);
       System.out.println("Enter any phrase and I'll repeat it!... ");
      //here we are reading the next line:
       String sentence = scan.nextLine();
       System.out.println(sentence);
   }
}
הפלט יכול להיות למשל הבא:
הזן כל ביטוי ואני אחזור עליו!... הנה הביטוי שלי הנה הביטוי שלי
אם אתה משתמש בשיטה next() במקום nextLine() , תקבל רק את המילה הראשונה של המשפט שלך.
הזן כל ביטוי ואני אחזור עליו!... הנה הביטוי שלי כאן
הבה נקבל דוגמה לשיטת NextLine() סורק עובדת לקריאה מקובץ. עבור הדוגמה הזו יצרתי קובץ txt myTest.txt. יש שתי שורות בקובץ הזה:
קובץ הבדיקה שלי והשורה הבאה שלי כאן
הנה תוכנית שקוראת שתי שורות מקובץ.
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class ScannerTest {

   public static void main(String[] args) throws FileNotFoundException {
       Scanner scanner = new Scanner(new File("d://myTest.txt"));

       String textFromFile1 = scanner.nextLine();
       String textFromFile2 = scanner.nextLine();
       System.out.println(textFromFile1);
       System.out.println(textFromFile2);
       scanner.close();

   }
}
הפלט הוא:
קובץ הבדיקה שלי והשורה הבאה שלי כאן
אם הנתיב שלך לקובץ שגוי או שקובץ בשם כזה אינו קיים, תקבל את הפלט הבא:
חריגה בשרשור "ראשי" java.io.FileNotFoundException: d:\myTest.txt ב-java.base/java.io.FileInputStream.open0(שיטה מקורית) ב-java.base/java.io.FileInputStream.open(FileInputStream.java :213) ב-java.base/java.io.FileInputStream.<init>(FileInputStream.java:155) ב-java.base/java.util.Scanner.<init>(Scanner.java:639) ב-ScannerTest.main( ScannerTest.java:8)
אם התוכנית מצאה את הקובץ שלך, אבל הוא ריק, תקבל NoSuchElementException:
חריגה בשרשור "ראשי" java.util.NoSuchElementException: לא נמצאה שורה ב-java.base/java.util.Scanner.nextLine(Scanner.java:1651) ב-ScannerTest.main(ScannerTest.java:10)
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION