2011-05-05 33 views
6

Tôi đang cố gắng thực hiện một bài tập cho trường học và tôi không biết cách xử lý đầu vào. Tôi đã cung cấp một liên kết dưới đây để biết bối cảnh về việc chuyển nhượng:Danh sách các chuỗi (nhiều dòng) làm đầu vào dòng lệnh trong Java

https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0B1DkmkmuB-leNDVmMDU0MDgtYmQzNC00OTdkLTgxMDEtZTkxZWQyYjM4OTI1&hl=en

Tôi có một ý tưởng chung về cách làm mọi việc phân hỏi, nhưng tôi không chắc chắn làm thế nào để đối phó với đầu vào.

Một đầu vào mẫu là:

a0
a00
ab000

Mà cho công suất:

Tree 1:
không hợp lệ!
Tree 2:
height: -1
con đường dài: 0
hoàn chỉnh: yes
postorder:
Tree 3:
height: 0
chiều dài đường dẫn: 0
hoàn chỉnh: yes
postorder : a
Cây 4:
chiều cao: 1
chiều dài đường dẫn: 1
.210 hoàn chỉnh: yes
postorder: ba

tôi có ý định làm điều này với Java. Câu hỏi của tôi là làm cách nào để nhập nhiều dòng đầu vào như trong mẫu vào dòng Windows cmd.exe khi không đường ống trong tệp đầu vào? Bởi vì nhấn enter sẽ chỉ chạy chương trình với một dòng đầu vào thay vì tạo một dòng mới. Ngoài ra, kể từ khi nhiệm vụ được đánh dấu tự động, đầu vào không thể tương tác, vì vậy làm thế nào tôi sẽ đi về biết khi nào ngừng đọc?

Cảm ơn.

+1

không thể nhìn thấy liên kết để phân ... – cMinor

+0

Oh xin lỗi quên để thiết lập cho công chúng . Nó sẽ hoạt động ngay bây giờ. – Jigglypuff

+1

+1 Câu hỏi cụ thể, được viết tốt. Chào mừng bạn đến với SO. –

Trả lời

2

Từ sự phân công:

Bạn có thể giả định đầu vào đó sẽ đến từ đầu vào tiêu chuẩn trong một dòng suối mà đại diện cho một chuỗi trên mỗi dòng. Trong thực tế , đầu vào sẽ xuất phát từ một số được chuyển thành tiêu chuẩn. Đầu ra phải được gửi tới tiêu chuẩn. Một mẫu đầu vào và đầu ra mẫu là có sẵn.

Chỉ cần đọc System.in và ghi vào System.out. Vì đầu vào sẽ được chuyển thành stdin, bạn sẽ nhận được EOF ở cuối tệp đầu vào.

Khi tương tác thông qua cửa sổ CMD, sử dụng tổ hợp phím Ctrl-Z để chỉ EOF (trên Windows) hoặc trên một hệ thống Linux, sử dụng tổ hợp phím Ctrl-D

+0

Cảm ơn bạn đã trả lời. Có cách nào tôi có thể chỉ ra EOL, vì vậy tôi có thể vượt qua một đầu vào như của đầu vào mẫu với nhiều dòng thông qua cửa sổ CMD? – Jigglypuff

+0

EOL chỉ là phím ENTER –

1

Nếu bạn có thể sử dụng hệ thống.trong, sau đó bạn có thể sử dụng một InputStreamReader đọc từ một dòng của System.in. Sau đó, sử dụng một BufferedReader để có được mỗi dòng bằng cách sử dụng phương thức readLine(). Ví dụ, nhìn vào mã này:

InputStreamReader input = new InputStreamReader(System.in) 
BufferedReader reader = new BufferedReader(input); 
while (reader.readLine()) { 
//Your code here. It will finish when the reader finds an EOL. 
} 
1

Mã này sẽ làm việc mà không có vấn đề gì -

Scanner sc = new Scanner(System.in); 
String bitstring=""; 
while(sc.hasNextLine()){ //until no other inputs to proceed    
    bitstring=sc.nextLine();//save it to the bitstring 
//proceed with your other codes 
} 
Các vấn đề liên quan