一份编程作业
给了一个有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);
}
}