2015-11-24 16 views
5

Tôi đang thực hiện bài tập giới thiệu về Lập trình hướng đối tượng với Java C. Thomas Wu.Cách sử dụng dấu phân cách, tại sao Máy quét không trả lại?

Trang 73 cung cấp mã để yêu cầu tên đầy đủ, mã thông báo bằng dấu phân cách và in lại.

import java.util.*; 

class Scanner1 
{ 
    public static void main(String[] args) 
    { 
     String name; 
     Scanner scanner = new Scanner(System.in); 

     scanner.useDelimiter(System.getProperty("line.separator")); 
     System.out.print("Enter full name (first, middle, last)"); 

     name = scanner.next(); 
     System.out.println("you entered " + name + "."); 
    } 
} 

Vấn đề là, tôi dường như không muốn in lại và chương trình bị đóng băng, buộc người quản lý tác vụ phải đóng chương trình.

Running Program

Nó biên dịch và không có lỗi. Tôi đã ở trên nó một vài lần để kiểm tra lỗi chính tả, vv

IDE with Delimiter Code

Nếu tôi loại bỏ các phần delimiter (pic cuối) nó hoạt động một chiếc thẻ đầu tiên lên đến không gian đầu tiên. Vì vậy, lỗi nằm ở đâu đó xung quanh mã phân cách.

IDE without Delimiter Code

+8

mã bạn đã đăng hoạt động tốt cho tôi! bạn có chắc là bạn đang nhấn "ENTER" sau khi nhập liệu? – ParkerHalo

+0

kiểm tra cửa sổ đầu ra của bạn .. –

+5

Dường như là sự cố với IDE bạn đang sử dụng. Có thể có sự khác biệt trong phân tách dòng – 6ton

Trả lời

5

Có vẻ như giao diện điều khiển của IDE của bạn không được xem xét [Enter] thiết bị tách dòng. Cách tốt nhất để thử nếu mã của bạn hoạt động là gọi tệp Java được biên dịch trực tiếp từ thiết bị đầu cuối (bảng điều khiển trên Windows). Tất nhiên trước hết bạn cần điều hướng đến thư mục mà tệp Java đã biên dịch vẫn tồn tại (nơi tệp tin Scanner1.class nằm).

Ví dụ: java Scanner1

Nếu bạn muốn trở thành hệ thống độc lập, cách tốt nhất để làm điều đó là để biên dịch một mẫu mà bạn xác định các dấu phân cách hoặc chỉ sử dụng được xây dựng trong phương pháp .nextLine() reference to Oracle docs

public class Main { 
    //These constant fields are from .nextLine() method in the Scanner class 
    private static final String LINE_SEPARATOR_PATTERN ="\r\n|[\n\r\u2028\u2029\u0085]"; 

    public static void main(String[] args){ 
     Scanner scanner = new Scanner(System.in); 
     scanner.useDelimiter(Pattern.compile(LINE_SEPARATOR_PATTERN)); 
     System.out.print("Enter name:"); 
     String name = scanner.next(); 
     System.out.println(name); 
    } 
} 
+0

Bạn đã thử mã của mình chưa? –

+1

Cảm ơn bạn đã bình luận, bây giờ nó sẽ hoạt động. Tôi không biết tại sao tôi lại sử dụng trường sai. –

Các vấn đề liên quan