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 mình thường dùng nhất (scan.nextLine())
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
package com.itphutran.demo;
import java.util.Scanner;
public class ScannerDemo1 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int i = scan.nextInt();
double d = scan.nextDouble();
scan.nextLine(); //Solusion here
String s = scan.nextLine();
System.out.println("String: " + s);
System.out.println("Double: " + d);
System.out.println("Int: " + i);
}
}
|
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.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
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()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
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()…
Cách 3: Dùng Integer.valueOf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
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
|
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!
Nguồn : itphutran.com
Nếu em bị miss ngay từ khi enter name thì sao ạ
Trả lờiXóa