2013-04-25 45 views
14

Mã này là từ http://algs4.cs.princeton.edu/11model/BinarySearch.java.html cho sách giáo khoa Thuật toán.lỗi biên dịch: không thể tìm thấy biểu tượng: Trong, StdIn và StdOut

import java.util.Arrays; 

public class BinarySearch { 

    // precondition: array a[] is sorted 
    public static int rank(int key, int[] a) { 
     int lo = 0; 
     int hi = a.length - 1; 
     while (lo <= hi) { 
      // Key is in a[lo..hi] or not present. 
      int mid = lo + (hi - lo)/2; 
      if  (key < a[mid]) hi = mid - 1; 
      else if (key > a[mid]) lo = mid + 1; 
      else return mid; 
     } 
     return -1; 
    } 

    public static void main(String[] args) { 
     int[] whitelist = In.readInts(args[0]); 

     Arrays.sort(whitelist); 

     // read key; print if not in whitelist 
     while (!StdIn.isEmpty()) { 
      int key = StdIn.readInt(); 
      if (rank(key, whitelist) == -1) 
       StdOut.println(key); 
     } 
    } 
} 

tôi nhận được lỗi này

$ javac BinarySearch.java 
BinarySearch.java:44: cannot find symbol 
symbol : variable In 
location: class BinarySearch 
     int[] whitelist = In.readInts(args[0]); 
         ^
BinarySearch.java:49: cannot find symbol 
symbol : variable StdIn 
location: class BinarySearch 
     while (!StdIn.isEmpty()) { 
       ^
BinarySearch.java:50: cannot find symbol 
symbol : variable StdIn 
location: class BinarySearch 
      int key = StdIn.readInt(); 
        ^
BinarySearch.java:52: cannot find symbol 
symbol : variable StdOut 
location: class BinarySearch 
       StdOut.println(key); 
       ^
4 errors 
+0

Có @ Jon là đúng. Lỗi hiển thị của nó trong trình soạn thảo của tôi. –

Trả lời

29

Lớp StdIn, StdOutIn không nằm trong các thư viện chuẩn của Java. Họ là những lớp học hỗ trợ được cung cấp để đi cùng với khóa học Princeton.

Từ trang 1.1 Programming Model liên kết trong mã nguồn:

Standard input and standard output. StdIn.java and StdOut.java are libraries for reading in numbers and text from standard input and printing out numbers and text to standard output. Our versions have a simpler interface than the corresponding Java ones (and provide a few tecnical improvements).

...

In.java and Out.java are object-oriented versions that support multiple input and output streams, including reading from a file or URL and writing to a file.

Vì vậy, nếu bạn muốn sử dụng mã nhị phân tìm kiếm như nó vốn có, bạn sẽ cần phải tải về các tập tin.

+0

Có thực sự trực tiếp sử dụng đầy đủ cho chương trình của chúng tôi không? Làm ơn giúp tôi . –

+1

@JDeveloper: Tôi không hiểu hoàn toàn câu hỏi của bạn (không rõ ràng), nhưng bạn có thể tự mình sử dụng các lớp đó để làm việc với 'BinarySearch.java', vâng. Xem các điều khoản cấp phép nếu bạn muốn sử dụng chúng ở nơi khác. –

+0

Cảm ơn @Jon vì phản hồi của bạn. –

3

Bạn có thể thay thế sau đó với

Output:

System.out.println(key); 

Input

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 
String Key= null; 
try { 
    Key = reader.readLine(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

Họ đang sử dụng thư viện tùy chỉnh để in các giá trị để an ủi (Có lẽ) Bạn có thể chuyển hướng đầu ra sang bàn điều khiển.

-2

Bạn nên sử dụng System.inSystem.out thay vì StdInStdOut.
Tạo một ObjectInputStream gói đầu vào hệ thống dòng theo cách sau:
ObjectInputStream ois = new ObjectInputStream(System.in);
Nó có một phương pháp readInt, AMD để kiểm tra xem nó là trống rỗng, bạn phải bắt EOFException.

2

StdIn và In là các Thư viện tùy chỉnh được bao gồm trong quá trình tải xuống lớp học algs4. Thực hiện chương trình bằng lệnh java-algs4 thay vì chỉ java và nó sẽ hoạt động.

5

Nếu bạn đã thiết lập môi trường khuyến khích cho khóa học, chỉ làm tăng thêm dòng này vào file java của bạn

import edu.princeton.cs.algs4.StdIn; 
import edu.princeton.cs.algs4.StdOut; 
+0

Tôi đã làm điều này bằng cách sử dụng DrJava và chương trình được biên dịch. Cảm ơn. Câu hỏi của tôi là làm thế nào để bạn bao gồm các gói edu..princeton.cs.algs4 khi sử dụng nhật thực? Tôi không thể làm cho nó để biên dịch bằng cách sử dụng eclipse –

+0

Wow mà làm việc với Princeton cung cấp trình biên dịch, mát mẻ! – sud007

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