Xử Lý Trôi Lệnh Khi Dùng Scanner Nhập Dữ Liệu Trong Java
Có thể bạn quan tâm
Bạn đang viết một chương trình cho phép nhập dữ liệu từ bàn phím? Bạn sử dụng Scanner để nhập dữ liệu? Vậy bạn có hay gặp lỗi không nhập được dữ liệu mà chưa rõ nguyên nhân. Rất có thể chương trình đã rơi vào tình trạng trôi lệnh mà nhiều người khác (cả mình) hay gặp.
Thế trôi lệnh trong chương trình khi sử dụng Scanner nó như thế nào? Chương trình sẽ không cho bạn nhập vào một chuỗi bằng next() hoặc nextLine() khi trước đó bạn dùng nextInt(), nextFloat(), nextDouble(),… để nhập vào một số.
Vì sao lại vậy trong khi code về ngữ nghĩa, cú pháp không có gì sai cả!
Giải thích nôm na
Ví dụ khi bạn sử dụng nextInt() để nhập một số và sau lệnh đó là nextLine() để nhập chuỗi. Khi chương trình chạy, bạn nhập vào một số (chẳng hạn như: 5) và nhấn Enter. Đáng lẽ ra chương trình sẽ tiếp tục yêu cầu bạn nhập vào chuỗi bởi lệnh nextLine(), nhưng không, nó không cho bạn nhập nữa, bởi nextLine() đã nhận ký tự Enter khi bạn nhập số 5 lúc trước rồi. Ở đời cái gì thừa thì người ta hót bớt giúp thôi, code cũng vậy 😀 (Giỡn chứ đó có thể là một lỗi của Scanner đang chờ bạn build lại 😀 )
Đoạn code ví dụ khi trôi lệnh
Nhập vào tên, tuổi, địa chỉ lần lượt theo thứ tự, chạy chương trình và xem kết quả bạn nhé.
package com.ngockhuong; import java.util.Scanner; public class Persion { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("Nhập tên: "); String name = input.nextLine(); System.out.print("Nhập tuổi: "); int age = input.nextInt(); // bị trôi lệnh tại đây System.out.print("Nhập địa chỉ: "); String address = input.nextLine(); System.out.println(name + " -- " + age + " -- " + address); } }Kết quả:
Nhập tên: Lâm Ngọc Khương Nhập tuổi: 21 Nhập địa chỉ: Lâm Ngọc Khương -- 21 --Cách xử lý trôi lệnh
Khi nhập tuổi, bạn cứ dùng nextLine() để nhập dưới dạng chuỗi, sau đó chuyển String thành int thôi
int age = Integer.parseInt(input.nextLine()); // đã xử lý trôi lệnhCode đã chống trôi lệnh:
package com.ngockhuong; import java.util.Scanner; public class Persion { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("Nhập tên: "); String name = input.nextLine(); System.out.print("Nhập tuổi: "); int age = Integer.parseInt(input.nextLine()); // đã xử lý trôi lệnh System.out.print("Nhập địa chỉ: "); String address = input.nextLine(); System.out.println(name + " -- " + age + " -- " + address); } }[alert-success]Có thể còn nhiều cách hay hơn, nếu bạn biết thì chia sẻ ngay bên dưới bình luận cùng mình nhé
Chia sẻ là niềm vui 🙂
[/alert-success] 5 5 votesĐánh giá bài viếtTừ khóa » Trôi Lệnh Trong Java
-
Xử Lý Trôi Lệnh Khi Dùng Scanner Trong Java Bằng Nhiều Cách
-
Trôi Lệnh Trong Java | How Kteam
-
Vấn đề Nhập Bị Trôi Lệnh Trong Java - Programming - Dạy Nhau Học
-
14. Hiện Tượng Trôi Lệnh Khi Sử Dụng Scanner - YouTube
-
[Java] Trôi Lệnh Trong Java Khi Dùng Scanner - Cách Học
-
[Java] Trôi Lệnh Trong Java Khi Dùng Scanner
-
Trôi Lệnh Trong Java Khi Dùng Scanner - Dotnet Group
-
[Java] Trôi Lệnh Trong Java Khi Dùng Scanner
-
Trôi Lệnh Trong Java Khi Dùng Scanner - Trang Blog
-
Bị Trôi Phím Khi Nhập Chuỗi Trong Java? [Archive] - Cộng đồng C Việt
-
5 Lỗi Oái Oăm Hạ Gục Newbie Khi Lập Trình Java - CodeLearn
-
Hỏi Về Bài Java đơn Giản, Chương Trình Bị Trôi Câu Lệnh
-
Java - Nhập Vào Thông Tin Của 1 Sinh Viên Và Hiển Thị Ra Màn Hình.