Xử lý trôi lệnh khi dùng Scanner trong Java bằng nhiều cách

Ở bài viết trước tôi đã hướng dẫn về cách sử dụng Scanner trong java.Tuy nhiên chúng ta chưa xử lý được trôi lệnh khi dùng scanner trong Java. Bài viết này tôi sẽ hướng dẫn các bạn cách xử lý trôi lệnh với một số cách thường dùng.
[the_ad id=”3598″]

Trôi lệnh khi sử dụng Scanner là gì? 

Cùng xem một ví dụ bên dưới:

package com.itphutran.demo;
 
import java.util.Scanner;
 
public class ScannerDemo1 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("Nhập vào họ tên  : ");
		String hoten = input.nextLine();
		
		System.out.println("Nhập vào tuổi : ");
		int tuoi = input.nextInt();
		
		System.out.println("Nhập vào tên lớp  : ");
		String tenlop = input.nextLine();
		System.out.println(">> THÔNG TIN SINH VIÊN");
		System.out.println("Họ tên : "+hoten);
		System.out.println("Tuổi : "+tuoi);
		System.out.println("Tên lớp : "+tenlop);
	}
}
[the_ad id=”3598″] Khi nhập dữ liệu vào tuổi sau đó các bạn nhập lớp, tuy nhiên chúng ta không thể nhập lớp và sau đó chương trình in ra kết quả hay nói cách khác là xuất dữ liệu với tên lớp bằng rỗng.

trôi lệnh trong java

Đó chính là hiện tượng trôi lệnh với Scanner trong Java.

Vì sao lại trôi lệnh?

Như qua ví dụ trên, trôi lệnh xảy ra khi chúng ta nhập một số sau đó nhập vào một chuỗi? Vậy có bạn nào đoán được vì sao lại trôi lệnh không? Đó là lý do khi các bạn nhập vào một số, sau đó nhấn  Enter thì lúc này, input.nextLine() vì nó là trả về là một chuỗi kiểu String nên sẽ nhận giá trị là ký tự Enter. Như vậy các bạn hiểu lý do tại sao tên lớp bằng rỗng rồi chứ.

Cách xử lý trôi lệnh khi dùng Scanner trong Java

Để xử lý trôi lệnh chúng ta có một số cách thường dùng như sau:

Cách 1: Dùng input.nextLine() để nhận ký tự Enter.

package com.itphutran.demo;

import java.util.Scanner;

public class ScannerDemo1 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("Nhập vào họ tên  : ");
		String hoten = input.nextLine();
		
		System.out.println("Nhập vào tuổi : ");
		int tuoi = input.nextInt();
		input.nextLine();
		System.out.println("Nhập vào tên lớp  : ");
		String tenlop = input.nextLine();
		System.out.println(">> THÔNG TIN SINH VIÊN");
		System.out.println("Họ tên : "+hoten);
		System.out.println("Tuổi : "+tuoi);
		System.out.println("Tên lớp : "+tenlop);
	}
}

Cách 2: Dùng Integer.parseInt()

package com.itphutran.demo;

import java.util.Scanner;

public class ScannerDemo1 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("Nhập vào họ tên  : ");
		String hoten = input.nextLine();
		
		System.out.println("Nhập vào tuổi : ");
		int tuoi = Integer.parseInt(input.nextLine());
		System.out.println("Nhập vào tên lớp  : ");
		String tenlop = input.nextLine();
		System.out.println(">> THÔNG TIN SINH VIÊN");
		System.out.println("Họ tên : "+hoten);
		System.out.println("Tuổi : "+tuoi);
		System.out.println("Tên lớp : "+tenlop);
	}
}

Thông thường, chúng ta sẽ sử dụng cách này thay vì sử dụng cách thứ nhất để xử lý trôi lệnh khi dùng scanner trong java.lý do vì gọn code, và chỉ một dòng thì chúng ta có thể xử lý xong rồi. Chúng ta luôn luôn quy về input.nextLine sau đó convert sang kiểu dữ liệu mà chúng ta mong muốn. Ví dụ : Float.parseFloat() hay Double.parseDouble()…
[the_ad id=”3598″] Cách 3: Dùng Integer.valueOf

package com.itphutran.demo;

import java.util.Scanner;

public class ScannerDemo1 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("Nhập vào họ tên  : ");
		String hoten = input.nextLine();
		
		System.out.println("Nhập vào tuổi : ");
		int tuoi = Integer.valueOf(input.nextLine());
		System.out.println("Nhập vào tên lớp  : ");
		String tenlop = input.nextLine();
		System.out.println(">> THÔNG TIN SINH VIÊN");
		System.out.println("Họ tên : "+hoten);
		System.out.println("Tuổi : "+tuoi);
		System.out.println("Tên lớp : "+tenlop);
	}
}

Như vậy qua ba cách trên, chúng ta hoàn toàn có thể xử lý được trôi lệnh khi sử dụng Scanner trong Java.

Bây giờ tôi sẽ thử chạy một trong 3 cách trên nhé:

Kết quả:

>> THÔNG TIN SINH VIÊN

Họ tên :Trần Phú

Tuổi : 24

Tên lớp: Java Core


[the_ad id=”3598″] Qua bài này chúng ta đã cùng nhau tìm hiểu về cách xử lý trôi lệnh khi sử dụng Scanner trong Java.

 

Chúc các bạn thực hiện thành công!

0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest
0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận
x