为什么从我的文件中读取的最小数字始终为0?(Java)

斯蒂芬·维斯涅夫斯基

当我运行程序时,最小的数字总是变成0。这为什么呢?最大值和平均值似乎是正确的。

问题很可能在于我如何使用随机类。

import java.io.*;
import java.util.*;
import java.util.Arrays;

public class ReadAndWrite {
public static void main(String[] args) {
    Random ran = new Random();
    int i_data = 0;
    int[] sort = new int[100];
    File file = new File("Test4");
    int total = 0;
    int average = 0;    

    try {
    file.createNewFile();
    }       
    catch(Exception e) {
        System.out.println("Could not create the file for some reason. Try again.");
        System.exit(0);
    }

    try {
        FileOutputStream fos = new FileOutputStream("Test4");
        ObjectOutputStream oos = new ObjectOutputStream(fos);

        for(int i = 0; i <= 100; i++) {
          int x = ran.nextInt(100);
          oos.writeInt(x);
        }
        oos.close();
    }
    catch(IOException e) {
        System.out.println("Whoops");
    }

    try {           
        FileInputStream fos = new FileInputStream("Test4");
        ObjectInputStream ooss = new ObjectInputStream(fos);            

        for (int i = 0; i < 100; i++) {
            sort[i] = ooss.readInt();

        }
        Arrays.sort(sort);
        for(int i = 0; i < 100; i++) {
            total = total + sort[i];
            average = total/100;
        }


        System.out.println("The largest number in the file is: " + sort[99]);
        System.out.println("The smallest number in the file is: " + sort[0]);
        System.out.println("The average number in the file is: " + average);

        ooss.close();
    }
    catch(Exception e) {
        System.out.println(e);
    }   
  }
}
彼得·劳瑞

您在读取每个值时正在对数组进行排序。

 for(int i = 0; i < 100; i++) {
     sort[i] = ooss.readInt();
     Arrays.sort(sort);
 }

这意味着您以[1,0,0,0,...]开头,但排序后为[0,0,0,... 1]

这是调试器将帮助您调试程序的地方。解决方案是仅在读取数组后对其进行排序。

一个更简单的解决方案是一次性写入和读取数组,而不是使用循环。

顺便说一句:除非您要写入/读取对象,否则不需要使用ObjectOutputStream,并且与说DataOutputStream相比,它会产生开销。

正如@KevinEsche指出的那样,如果您有100个0到99的随机值,则很有可能其中之一为0,尽管并非每次都如此。

较短的实现可能看起来像这样

public static void main(String[] args) throws IOException {
    Random rand = new Random();

    int samples = 100;
    try (DataOutputStream out = new DataOutputStream(new FileOutputStream("test"))) {
        out.writeInt(samples);
        for (int i = 0; i < samples; i++)
            out.writeInt(rand.nextInt(100));
    }

    int[] sort;
    try (DataInputStream in = new DataInputStream(new FileInputStream("test"))) {
        int len = in.readInt();
        sort = new int[len];
        for (int i = 0; i < len; i++)
            sort[i] = in.readInt();
    }

    IntSummaryStatistics stats = IntStream.of(sort).summaryStatistics();
    System.out.println("The largest number in the file is: " + stats.getMax());
    System.out.println("The smallest number in the file is: " + stats.getMin());
    System.out.println("The average number in the file is: " + stats.getAverage());
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

获取文件中最小数字的索引

来自分类Dev

为什么$#在我的函数中始终为0?

来自分类Dev

Java:查找数组中大于零的最小数字

来自分类Dev

Java:两个最小数字helo

来自分类Dev

如何计算ArrayList中的最小数字?

来自分类Dev

随机数组中的最小数字及其索引

来自分类Dev

n的数字乘积的最小数字

来自分类Dev

在Python中大小为N的未排序列表中获取k个最小数字的最快方法?

来自分类Dev

第k个最小数字

来自分类Dev

如何在C中找到数字中的最小数字及其在向量中的位置?

来自分类Dev

小数字显示为零

来自分类Dev

不能由数组中的数字之和形成的最小数字

来自分类Dev

在数字列表中查找最小数字的递归方法

来自分类Dev

如何正确获得数字序列中的最大和最小数字?

来自分类Dev

Python:列表中的最小数字,包括重复数字

来自分类Dev

从用户输入的数字中显示最大和最小数字 C++

来自分类Dev

在包含字符串和数字的二维数组中查找最小数字

来自分类Dev

范围[a,b]中的最小数字,二进制表示形式中最大数字为“ 1”

来自分类Dev

我想获取不包含零的行的最小数字索引

来自分类Dev

使用C中的指针查找数组中的最大和最小数字

来自分类Dev

Java-使用数组查找最大和最小数字

来自分类Dev

Java-使用数组查找最大和最小数字

来自分类Dev

2D数组中的最小数字无法正常工作

来自分类Dev

程序查找字符串中的最小数字

来自分类Dev

excel中范围内的最大/最小数字,无重叠

来自分类Dev

一组中的两个最小数字

来自分类Dev

查找一列中的3个最小数字

来自分类Dev

使用split('')和reverse();查找数组中的最小数字;

来自分类Dev

如何在不排序的情况下找到数组中的最小数字?

Related 相关文章

  1. 1

    获取文件中最小数字的索引

  2. 2

    为什么$#在我的函数中始终为0?

  3. 3

    Java:查找数组中大于零的最小数字

  4. 4

    Java:两个最小数字helo

  5. 5

    如何计算ArrayList中的最小数字?

  6. 6

    随机数组中的最小数字及其索引

  7. 7

    n的数字乘积的最小数字

  8. 8

    在Python中大小为N的未排序列表中获取k个最小数字的最快方法?

  9. 9

    第k个最小数字

  10. 10

    如何在C中找到数字中的最小数字及其在向量中的位置?

  11. 11

    小数字显示为零

  12. 12

    不能由数组中的数字之和形成的最小数字

  13. 13

    在数字列表中查找最小数字的递归方法

  14. 14

    如何正确获得数字序列中的最大和最小数字?

  15. 15

    Python:列表中的最小数字,包括重复数字

  16. 16

    从用户输入的数字中显示最大和最小数字 C++

  17. 17

    在包含字符串和数字的二维数组中查找最小数字

  18. 18

    范围[a,b]中的最小数字,二进制表示形式中最大数字为“ 1”

  19. 19

    我想获取不包含零的行的最小数字索引

  20. 20

    使用C中的指针查找数组中的最大和最小数字

  21. 21

    Java-使用数组查找最大和最小数字

  22. 22

    Java-使用数组查找最大和最小数字

  23. 23

    2D数组中的最小数字无法正常工作

  24. 24

    程序查找字符串中的最小数字

  25. 25

    excel中范围内的最大/最小数字,无重叠

  26. 26

    一组中的两个最小数字

  27. 27

    查找一列中的3个最小数字

  28. 28

    使用split('')和reverse();查找数组中的最小数字;

  29. 29

    如何在不排序的情况下找到数组中的最小数字?

热门标签

归档