文件里一共有100万个用空格分隔开的随机数,找出其中最大的数和最小的数。

一份编程作业

给了一个有100万个用空格分隔开的随机数,随机数用空格隔开了,找出其中的最大值和最小值。
如下图:

数字的有正有负,而且足够长(长到想用字符串的长短来比较大小)
但还是最直接的想法,读取里面的每个数存放的数组中,然后去找最大最小值,但读取文件这一个就有点头疼。

读取文件的操作:

BufferedReader 字符缓冲输入流:
从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
构造方法摘要
BufferedReader(Reader in)
创建一个使用默认大小输入缓冲区的缓冲字符输入流。
BufferedReader(Reader in, int sz)
创建一个使用指定大小输入缓冲区的缓冲字符输入流

FileReader 用于读取字符流。
构造方法摘要
FileReader(File file)
在给定从中读取数据的 File 的情况下创建一个新 FileReader。

BufferedReader readTxt = new BufferedReader(new FileReader(new File("D:\\随机数.txt")));

接下来就是最核心的(copy来的代码

        String textLine = "";
        String str = "";
        while((textLine=readTxt.readLine()) != null) {
                str += " " + textLine;
        }
        String[] numbersArray = str.split(" ");//numbersArray下保存得即为各个数字

这里我们接触到了split()
public String[] split(String regex)
根据给定正则表达式的匹配拆分此字符串。
该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,所得数组中不包括结尾空字符串。
在这里插入图片描述

这里返回的是字符串数组,将其存在自己定义的数组中

转化成long的数组
看这么长串数字必是用int必是越界了

long[] ints = new long[numbersArray.length];
        for(int i=1;i<numbersArray.length;i++){
            ints[i] = Long.parseLong(numbersArray[i]);//转化这一步骤也很重要啊,知识点!
        }

得到了数组就可以找出最大值最小值了

//求最大值
        long max=0;
        for(int i=0;i<ints.length;i++){
            if(max<ints[i]) max=ints[i];
        }
        System.out.println("最大值:");
        System.out.println(max);

        //求最小值
        long min=0;
        for(int i=0;i<ints.length;i++){
            if(min>ints[i]) min=ints[i];
        }
        System.out.println("最小值:");
        System.out.println(min);

java读取txt中用空格隔开的数字

https://blog.csdn.net/gao1440156051/article/details/46806663
(感谢这位大佬%%%%%)

最终代码:

public class Demo05Test {

    public static void main(String[] args) throws IOException {
        BufferedReader readTxt = new BufferedReader(new FileReader(new File("D:\\随机数.txt")));
        String textLine = "";
        String str = "";
        while((textLine=readTxt.readLine()) != null) {
                str += " " + textLine;
        }
        String[] numbersArray = str.split(" ");//numbersArray下保存得即为各个数字



        //存放到ints数组中
        long[] ints = new long[numbersArray.length];
        for(int i=1;i<numbersArray.length;i++){
            ints[i] = Long.parseLong(numbersArray[i]);
        }
        //System.out.println(ints[7]);


        //求最大值
        long max=0;
        for(int i=0;i<ints.length;i++){
            if(max<ints[i]) max=ints[i];
        }
        System.out.println("最大值:");
        System.out.println(max);

        //求最小值
        long min=0;
        for(int i=0;i<ints.length;i++){
            if(min>ints[i]) min=ints[i];
        }
        System.out.println("最小值:");
        System.out.println(min);

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值