CodeGym /وبلاگ جاوا /Random-FA /روش Scanner nextLine() در جاوا
John Squirrels
مرحله
San Francisco

روش Scanner nextLine() در جاوا

در گروه منتشر شد
Scanner ، کلاسی در زبان برنامه نویسی جاوا که می تواند انواع و رشته های ابتدایی را با استفاده از عبارات منظم تجزیه کند. متد اسکنر nextLine() در جاوا این اسکنر را فراتر از خط فعلی حرکت می دهد و ورودی نادیده گرفته شده را برمی گرداند. اطلاعات بیشتر در مورد nextLine() و Scanner در ادامه این مقاله.

مختصری در مورد کلاس Scanner و نحوه عملکرد آن

به طور کلی، کلاس java.util.Scanner به شما امکان می دهد ورودی از منابع مختلف، از جمله کنسول را بخوانید. این واقعا شبیه به یک اسکنر کلاسیک به نظر می رسد. این دستگاه سخت افزاری معماری پیچیده ای دارد، اما توصیف کار آن بسیار ساده است. اسکنر تاریخی را می‌خواند که کاربر روی آن قرار می‌دهد، مانند کاغذها و داده‌ها را مانند یک تصویر یا فایل pdf در حافظه نگه می‌دارد. اسکنر جاوا، درست مانند یک اسکنر واقعی، داده ها را از منبعی که برای آن مشخص کرده اید می خواند. به عنوان مثال، از یک رشته، از یک فایل، از یک کنسول. سپس این اطلاعات را می شناسد و در صورت نیاز پردازش می کند. به عنوان مثال، برنامه از کنسول می خواهد داده هایی را وارد کند و آن ها را می خواند یا می خواهد آن ها را از یک فایل بخواند. برای این عملیات، اسکنر چندین روش دارد که با کلمه "بعدی" ترکیب شده است. مانند next() ، nextLine() ، nextInt() ، nextDouble() .

متد nextLine().

همانطور که در بالا گفتیم، شی اسکنر ورودی را با استفاده از الگوی جداکننده، به صورت پیش‌فرض فضای خالی به نشانه‌ها تقسیم می‌کند، اما می‌توان آن را با یک رشته (java.lang.String) یا یک عبارت منظم ( java.util.regex) جایگزین کرد. الگو ). سپس توکن های به دست آمده را می توان با استفاده از روش های بعدی مختلف به مقادیر مختلف تبدیل کرد. متد Scanner nextLine() در جاوا این اسکنر را از خط فعلی عبور می دهد و ورودی که نادیده گرفته شده را برمی گرداند. () General () نشانه کامل بعدی را از این اسکنر پیدا کرده و برمی گرداند. متد 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(Filejavaput :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 را دریافت خواهید کرد:
استثنا در رشته "main" 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