CodeGym/Blog Java/Ngẫu nhiên/Phương thức Scanner nextLine() trong Java

Phương thức Scanner nextLine() trong Java

Xuất bản trong nhóm
Scanner , một lớp trong ngôn ngữ lập trình Java có thể phân tích các kiểu và chuỗi nguyên thủy bằng cách sử dụng các biểu thức chính quy. Phương thức quét nextLine () trong Java di chuyển máy quét này ra ngoài dòng hiện tại và trả về dữ liệu đầu vào bị bỏ qua. Thông tin thêm về nextLine()Scanner ở phần sau của bài viết này.

Sơ lược về lớp Scanner và cách thức hoạt động của nó

Nói một cách đại khái, lớp java.util.Scanner cho phép bạn đọc đầu vào từ nhiều nguồn khác nhau, bao gồm cả bảng điều khiển. Nó thực sự trông giống như một máy quét cổ điển. Thiết bị phần cứng này có kiến ​​trúc phức tạp nhưng việc mô tả hoạt động của nó khá đơn giản. Máy quét đọc ngày tháng mà người dùng ghi vào đó, chẳng hạn như giấy tờ và lưu dữ liệu vào bộ nhớ dưới dạng ảnh hoặc tệp pdf. Máy quét Java, giống như máy thật, đọc dữ liệu từ nguồn mà bạn chỉ định cho nó. Ví dụ: từ một chuỗi, từ một tệp, từ bảng điều khiển. Sau đó, nó nhận ra thông tin này và xử lý nó khi cần thiết. Ví dụ: chương trình yêu cầu nhập một số dữ liệu từ bảng điều khiển và đọc nó hoặc muốn đọc nó từ một tệp. Đối với thao tác này, máy quét có một số phương pháp kết hợp với từ “tiếp theo”. Chẳng hạn như next() , nextLine() , nextInt() , nextDouble() .

phương thức nextLine()

Như chúng tôi đã nói ở trên, đối tượng của máy quét sẽ chia đầu vào thành các mã thông báo bằng cách sử dụng mẫu dấu phân cách, khoảng trắng theo mặc định, nhưng nó có thể được thay thế bằng một chuỗi ( java.lang.String ) hoặc một biểu thức chính quy ( java.util.regex. Mẫu ). Sau đó, mã thông báo kết quả có thể được chuyển đổi thành các giá trị thuộc nhiều loại khác nhau bằng nhiều phương pháp tiếp theo khác nhau. Phương thức Scanner nextLine() trong Java sẽ đưa trình quét này vượt qua dòng hiện tại và trả về dữ liệu đầu vào bị bỏ qua. General next() tìm và trả về mã thông báo hoàn chỉnh tiếp theo từ máy quét này. Phương thức nextLine() tiếp tục tìm kiếm đầu vào cho dấu phân cách dòng, do đó, nó có thể đệm tất cả dữ liệu đầu vào đang tìm kiếm một dòng để bỏ qua nếu không có dấu phân cách dòng. Phương pháp này đưa ra các ngoại lệ tiếp theo:
  • NoSuchElementException: ném nếu không tìm thấy dòng nào
  • IllegalStateException: ném nếu máy quét này bị đóng

ví dụ nextLine()

Giả sử chúng tôi muốn người dùng nhập bất kỳ từ hoặc cụm từ nào vào bảng điều khiển và chúng tôi có thể cho anh ấy biết từ hoặc cụm từ nào anh ấy đã nhập.
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);
   }
}
Đầu ra có thể là ví dụ tiếp theo:
Nhập bất kỳ cụm từ nào và tôi sẽ lặp lại nó!... đây là cụm từ của tôi đây là cụm từ của tôi
Nếu bạn sử dụng phương thức next() thay vì nextLine() , bạn sẽ chỉ nhận được từ đầu tiên trong câu của mình.
Nhập bất kỳ cụm từ nào và tôi sẽ lặp lại nó!... đây là cụm từ của tôi đây
Hãy lấy một ví dụ về phương thức nextLine() của máy quét đang hoạt động để đọc từ một tệp. Trong ví dụ này, tôi đã tạo một tệp txt myTest.txt. Có hai dòng trong tập tin đó:
tập tin thử nghiệm của tôi và dòng tiếp theo của tôi là ở đây
Đây là chương trình đọc hai dòng từ một tập tin.
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();

   }
}
Đầu ra là:
tập tin thử nghiệm của tôi và dòng tiếp theo của tôi là ở đây
Nếu đường dẫn đến tệp của bạn sai hoặc tệp có tên đó không tồn tại, bạn sẽ nhận được kết quả đầu ra tiếp theo:
Ngoại lệ trong chuỗi "chính" java.io.FileNotFoundException: d:\myTest.txt tại java.base/java.io.FileInputStream.open0 (Phương thức gốc) tại java.base/java.io.FileInputStream.open(FileInputStream.java:213) tại java.base/java.io.FileInputStream.(FileInputStream.java:155) tại java.base/java.util.Scanner.(Scanner.java:639) tại ScannerTest.main(ScannerTest.java:8)
Nếu chương trình tìm thấy tệp của bạn nhưng nó trống, bạn sẽ nhận được NoSuchElementException:
Ngoại lệ trong chuỗi "chính" java.util.NoSuchElementException: Không tìm thấy dòng tại java.base/java.util.Scanner.nextLine(Scanner.java:1651) tại ScannerTest.main(ScannerTest.java:10)
Bình luận
  • Phổ biến
  • Mới
Bạn phải đăng nhập để đăng nhận xet
Trang này chưa có bất kỳ bình luận nào