从文件循环中查找最大值和最小值

时间:2016-02-25 02:32:14

标签: java file int max min

我需要从这个文件中找到max和min int我写了一个for循环到文件现在我需要一种方法来读取文件流的最大值和最小值

  public static void main(String[] args) throws FileNotFoundException, IOException {
    // TODO code application logic here
    PrintWriter file = new PrintWriter("numbers.dat");
    FileInputStream in = new FileInputStream("numbers.dat");

    DataInputStream data = new DataInputStream(in);

    try (DataOutputStream output = new DataOutputStream(new FileOutputStream("numbers.dat"))) {
        for (int i = 0; i < 1000; i++) {
            output.write(i);

        }
        output.close();

    }

3 个答案:

答案 0 :(得分:0)

为了响应'我需要从这个文件中找到最大和最小的整数',只需使用for循环来查找最大和最小的数字。

int[] integers;  // Your integers in an array, however you loaded them.
int max;         // To hold the maximum integer found.
int min;         // To hold the minimum integer found.

    for (int element : integers) {
        // If it's bigger, update.
        if (element > max) {
            max = element;
        }

        // If it's smaller, update.
        if (element < min) {
            min = element;
        }
    }
}

为了回应'我现在为文件写了一个for循环,我需要一种方法来读取文件流的最大值和最小值',你必须将文件加载到内存中。

现在,我不知道如何使用您打印文件的方式(或者至少,您打算如何在给定的代码中编写文件)而不使用任何类型的分隔符(例如,\n)。

答案 1 :(得分:0)

我建议将文件解析为整数列表。

如果将文件解析为Integer列表,则可以使用以下内容获得min和max:

List<Integer> l = new ArrayList<Integer>();
// Populate the list from the entries in the file
...
// Get the min and max
Integer min = Collections.min(l);
Integer max = Collections.max(l);
System.out.println("min=" + min + "; max=" + max);

要确定如何从文件中创建整数列表,了解文件的格式会很有帮助。

答案 2 :(得分:0)

查看你的代码,你需要调用输出。 writeInt (i)不写(i)

private static void doRead() throws IOException
{
    final PrintWriter file = new PrintWriter("numbers.dat");

    try (DataOutputStream output = new DataOutputStream(new FileOutputStream("numbers.dat"))) {
        for (int i = 0; i < SIZE; i++) {
            output.writeInt(i);  // do writeInt(i) not write(i)
        }
    }

    try ( FileInputStream in = new FileInputStream("numbers.dat");
          DataInputStream data = new DataInputStream(in) )
    {

        final ArrayList<Integer> list = new ArrayList<>(SIZE);

        for( int i=0; i < SIZE; i++)
        {
            list.add( data.readInt() );
        }

        final int max = list.stream()
            .max( (a, b) -> Integer.compare( a, b ) )
            .get();

        final int min = list.stream()
            .min( (a, b) -> Integer.compare( a, b ) )
            .get();

        System.out.println("max=" + max);
        System.out.println("min=" + min);
    }
}