CodeGym /จาวาบล็อก /สุ่ม /วิธีการสแกนเนอร์ nextLine() ใน Java
John Squirrels
ระดับ
San Francisco

วิธีการสแกนเนอร์ nextLine() ใน Java

เผยแพร่ในกลุ่ม
Scannerซึ่งเป็นคลาสในภาษาการเขียนโปรแกรม Java ที่สามารถแยกวิเคราะห์ประเภทและสตริงดั้งเดิมโดยใช้นิพจน์ทั่วไป วิธี การสแกน nextLine()ใน Java จะย้ายสแกนเนอร์นี้ไปไกลกว่าบรรทัดปัจจุบันและส่งกลับอินพุตที่ข้ามไป ข้อมูลเพิ่มเติมเกี่ยวกับnextLine()และScannerในบทความนี้

สั้น ๆ เกี่ยวกับคลาส Scanner และวิธีการทำงาน

พูดโดยคร่าวๆ คลาส java.util.Scannerอนุญาตให้คุณอ่านอินพุตจากแหล่งต่างๆ รวมถึงคอนโซลด้วย มันดูคล้ายกับเครื่องสแกนแบบคลาสสิกจริงๆ อุปกรณ์ฮาร์ดแวร์นี้มีสถาปัตยกรรมที่ซับซ้อน แต่ค่อนข้างง่ายในการอธิบายงาน สแกนเนอร์จะอ่านวันที่ที่ผู้ใช้วางไว้ เช่น เอกสาร และเก็บข้อมูลไว้ในหน่วยความจำ เช่น รูปภาพหรือไฟล์ pdf เครื่องสแกน Java อ่านข้อมูลจากแหล่งที่คุณระบุเช่นเดียวกับของจริง ตัวอย่างเช่น จากสตริง จากไฟล์ จากคอนโซล จากนั้นระบบจะจดจำข้อมูลนี้และประมวลผลตามความจำเป็น ตัวอย่างเช่น โปรแกรมขอให้ป้อนข้อมูลบางส่วนจากคอนโซลแล้วอ่านหรือต้องการอ่านจากไฟล์ สำหรับการดำเนินการนี้ เครื่องสแกนมีหลายวิธีรวมกับคำว่า "ถัดไป" เช่นnext() , nextLine() , nextInt() , nextDouble( )

nextLine() วิธีการ

ดังที่เราได้กล่าวไปแล้วข้างต้น ออบเจ็กต์ของเครื่องสแกนจะแยกอินพุตออกเป็นโทเค็นโดยใช้รูปแบบตัวคั่น โดยมีช่องว่างตามค่าเริ่มต้น แต่สามารถแทนที่ด้วยสตริง ( java.lang.String ) หรือนิพจน์ทั่วไป ( java.util.regex ลวดลาย ). โทเค็นผลลัพธ์สามารถแปลงเป็นค่าประเภทต่างๆ โดยใช้วิธีการถัดไปต่างๆ เมธอด Scanner 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();

   }
}
ผลลัพธ์คือ:
ไฟล์ทดสอบของฉันและบรรทัดถัดไปของฉันอยู่ที่นี่
หากเส้นทางไปยังไฟล์ของคุณไม่ถูกต้องหรือไม่มีไฟล์ชื่อดังกล่าว คุณจะได้ผลลัพธ์ถัดไป:
ข้อยกเว้นในเธรด "main" java.io.FileNotFoundException: d:\myTest.txt ที่ java.base/java.io.FileInputStream.open0(Native Method) ที่ 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:
ข้อยกเว้นในเธรด "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