如何找到file.txt的最大和最小数量?

时间:2014-02-16 09:34:49

标签: java file integer readfile

我正在开发一个Java程序。我必须计算 file.txt 中的总数,但我无法找到 file.txt 中最大和最小的数字,我希望你可以帮助我。

我的代码在这里:

package program;

import java.io.IOException;
import java.io.StreamTokenizer;
import java.io.FileReader;

public class count 
{
    int countnum=0;

    public count() throws IOException
    {
        StreamTokenizer st=new StreamTokenizer(new FileReader("file.txt"));

        while(st.nextToken() != StreamTokenizer.TT_EOF) {           
            if(st.ttype == StreamTokenizer.TT_NUMBER) {
                countnum++;
            }
        }

        System.out.println("total numbs are: "+countnum);
    }

    public static void main(String[] args) throws IOException {
        new count();
    }

}

2 个答案:

答案 0 :(得分:1)

上一个答案中的代码有效但在这种情况下使用Set是一种矫枉过正。它会产生将每个数字存储在集合中的成本。对于非常大的文件,性能将明显比下面的解决方案更糟糕,这在我看来同样优雅​​。

public void count() throws IOException
{
    int countnum = 0;
    int min = Integer.MAX_VALUE, max = Integer.MIN_VALUE;
    StreamTokenizer st = new StreamTokenizer(new FileReader("file.txt"));

    while(st.nextToken() != StreamTokenizer.TT_EOF) {           
        if(st.ttype == StreamTokenizer.TT_NUMBER) {
            countnum++;
            int value = (int) st.nval;
            if (value < min)
                min = value;
            if (value > max)
                max = value; 
        }
    }

    System.out.println("total numbs are: " + countnum);
    System.out.println("highest is : " + max + ", smallest is : " + min);
}

答案 1 :(得分:0)

这应该有效:

public void count() throws IOException
{

    int countnum = 0;
    Set set = new TreeSet();
    StreamTokenizer st = new StreamTokenizer(new FileReader("file.txt"));

    while (st.nextToken() != StreamTokenizer.TT_EOF)
    {

        if (st.ttype == StreamTokenizer.TT_NUMBER)
        {
            set.add(st.nval);
            countnum++;
        }
    }
    System.out.println("total numbs are: " + countnum);

    System.out.println("highest is : " + ((SortedSet) set).last() + " Smallest is : " + ((SortedSet) set).first());

}

我使用Set进行排序输入,这样我就不必编写那个逻辑了。 Read Collections in Java。您可能会发现它们在许多地方都很有用。