java为什么在,StdIn,StdOut中没有解析
我有一本算法书,将代码复制到我的eclipse或windows cmd中,使用javac
进行编译,In
,StdIn
,StdOut
未解析。我看到我已经将JAVA_HOME
设置为我的jdk目录C:\Program Files (x86)\Java\jdk1.7.0
。有什么问题吗
import java.util.Arrays;
public class BinarySearch {
public static int rank(int key, int[] a)
{
int lo = 0;
int hi = a.length - 1;
while(lo <= hi)
{
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);
while(!**StdIn**.isEmpty())
{
int key = **StdIn**.readInt();
if(rank(key, whitelist) == -1)
**StdOut**.println(key);
}
}
}
粗体类(此处用****括起来)未解析
# 1 楼答案
至少有几本Java编程教科书不让您使用标准Java,而是让您使用它们自己的类,因为这对初学者来说“更容易”。其中一个是R.Sedgewick和K.Wayne的《Java编程入门》,另一个是Garside和Mariani的《Java:第一次接触》
您需要下载自定义类并将其放在类路径上;如果有什么好处,应该在教科书中描述如何做到这一点
有时这是在实验室的计算机上完成的,但你必须自己在自己的计算机上完成
# 2 楼答案
被称为Stdin和StdOut的流被称为
及
分别在Java中
乍一看,你似乎错过了课堂上的这两行:
但是,请注意,在Java中,命名约定指定使用camelCased变量名,以非大写字母开始。所以应该是这样的:
(别忘了更改方法中的变量引用…)
但是很少进行这种抽象,这些流通常只是通过系统类引用
然而,感谢@harpun,他显然对手头的教科书很熟悉,他指出,你参考的课程是为教科书制作的图书馆的一部分