2011-10-05 37 views
5

Tôi đang thực hiện một bài tập ở trường và tôi không thể tìm cách làm một việc. Đối với những gì tôi đã đọc, Máy quét không phải là cách tốt nhất nhưng vì giáo viên chỉ sử dụng Máy quét, việc này phải được thực hiện bằng Máy quét.Java ngừng đọc sau khi dòng trống

Đây là vấn đề. Người dùng sẽ nhập văn bản vào một mảng. Mảng này có thể lên đến 10 dòng và đầu vào của người dùng kết thúc bằng một dòng trống.

Tôi đã làm điều này:

String[] text = new String[11] 
Scanner sc = new Scanner(System.in); 
int i = 0; 
System.out.println("Please insert text:"); 
while (!sc.nextLine().equals("")){ 
     text[i] = sc.nextLine(); 
     i++;   
    } 

Nhưng điều này không hoạt động đúng và tôi không thể hình dung nó ra. Lý tưởng nhất, nếu người dùng nhập:

This is line one 
This is line two 

và bây giờ nhấn enter, wen in mảng nó sẽ cho:

[This is line one, This is line two, null,null,null,null,null,null,null,null,null] 

Bạn có thể giúp tôi?

Trả lời

8
while (!sc.nextLine().equals("")){ 
     text[i] = sc.nextLine(); 
     i++;   
} 

Điều này đọc hai dòng từ đầu vào của bạn: một dòng so với đầu vào của bạn: một dòng so với chuỗi trống, sau đó khác so với chuỗi thực tế trong mảng. Bạn muốn đặt dòng trong một biến để bạn kiểm tra và xử lý với cùng String trong cả hai trường hợp:

while(true) { 
    String nextLine = sc.nextLine(); 
    if (nextLine.equals("")) { 
     break; 
    } 
    text[i] = nextLine; 
    i++; 
} 
+0

Nhiều cảm ơn vì lời giải thích của bạn. Điều đó làm việc – Favolas

+1

Đừng quên đầu vào tối đa của 10 dòng trong thời gian nghỉ của bạn. –

+0

@XenoLupus Có. Tôi không quên nhưng vẫn cảm ơn rất nhiều – Favolas

1

Đây là readline thành ngữ điển hình, áp dụng cho mã của bạn:

String[] text = new String[11] 
Scanner sc = new Scanner(System.in); 
int i = 0; 
String line; 
System.out.println("Please insert text:"); 
while (!(line = sc.nextLine()).equals("")){ 
    text[i] = line; 
    i++;   
} 
Các vấn đề liên quan