Java不打印整数变量

时间:2014-02-23 21:59:27

标签: java printing

以下代码从命令行接收两个文件名,并在第二个文件中打印不在第一个文件中的数字。我还需要打印有多少这样的数字。 假设程序打印出来:

12
13
14

我必须将其更改为最后打印:

12
13
14
There are 3 numbers!

这就是我在主函数中创建变量 ns 的原因。

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)
    {
        In in = new In(args[0]);
        int[] whitelist = in.readAllInts();
        Arrays.sort(whitelist);

        int ns = 0;

        while (!StdIn.isEmpty())
        {
            int key = StdIn.readInt();

            if (rank(key, whitelist) == -1)
            {
                StdOut.println(key);
                ns++;
            }
        }

        System.out.println(ns);
    }
}

它编译并运行java BinarySearch tinyW.txt < tinyT.txt。 它确实打印

12
13
14

但它最终不会打印 ns 变量。 有谁知道为什么?

2 个答案:

答案 0 :(得分:0)

程序不打印ns变量的唯一原因是它没有执行那行代码。

您可能有一个无限循环,因为“!StdIn.isEmpty()”始终为真。

您可以通过在while指令上方移动该打印代码来快速检查整数是不是您的问题。

答案 1 :(得分:0)

您应该正确设置$ CLASSPATH。我建议您添加 .bashrc

#Variables
JAVA=$HOME/algs4

#Set $CLASSPATH
if [ -d $JAVA ]; then
        export CLASSPATH=.:$JAVA/stdlib.jar:$JAVA/algs4.jar
fi