从文本文件中读取整数并将它们放入排序数组中
Reading integers from a text file and putting them into a sorted array
我整天都在为这个问题绞尽脑汁,想弄清楚如何做到这一点。我尝试了多种不同的方法,但我觉得我一直在做这一切都是错误的。我的任务是从 .txt 文件中读取 50 个整数并将内容放入排序数组中,然后列出 highest/lowest/average 数字,但我很难通过第一步。
这些是文本文件中的 50 个数字
64
61
169
113
81
61
206
176
39
100
22
200
128
152
59
165
67
116
165
72
26
149
58
204
188
69
203
94
96
134
83
122
192
85
62
159
35
162
95
92
126
66
66
203
187
18
132
182
181
175
在这个文件中,我设法让 "proj8" 文件至少打印出来。
import java.util.Scanner;
import java.io.IOException;
import java.util.ArrayList;
import java.util.*;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.List;
import java.io.*;
public class ect7{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("proj8.txt"));
String line = br.readLine();
while ((line = br.readLine()) != null) {
System.out.println(line);
}
br.close();
}
}
在这个文件中,我设法打印了 "proj8" 文件并对其进行了一些排序,但太疯狂了。
import java.util.Scanner;
import java.io.IOException;
import java.util.ArrayList;
import java.util.*;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.List;
import java.io.*;
public class ect73{
public static void main(String[] args) throws IOException {
//int [] myArr = new int[50];
//FileReader fr = new FileReader("proj8.txt");
BufferedReader br = new BufferedReader(new FileReader("proj8.txt"));
List<String> lines = new ArrayList<String>();
String line = null;
//String line = br.readLine();
while ((line = br.readLine()) != null) {
lines.add(line);
Collections.sort(lines);
//System.out.println(line);
System.out.println(lines);
}
br.close();
//return lines.toArray(new String[lines.size()]);
}
}
我知道我做错了,但我不知道如何做对。我需要能够将 .txt 文件以整数形式输入到排序数组中,然后列出 highest/lowest/average 数字。任何帮助都是很好的帮助,但是代码越简单越好。
您正在尝试对文件的行进行排序,其中包含由 space 分隔的多个数字。您必须将每一行拆分为数字,对于每个数字,您必须将其解析为 Integer
并将其存储在 ArrayList
中。最后你可以对 ArrayList
.
进行排序
BufferedReader br = new BufferedReader(new FileReader("proj8.txt"));
List<Integer> numbers = new ArrayList<Integer>();
String line = null;
//String line = br.readLine();
while ((line = br.readLine()) != null) {
String []strNumbers = line.split(" ");
for(String strNumber : strNumbers){
numbers.add(Integer.parseInt(strNumber));
}
//System.out.println(line);
}
br.close();
Collections.sort(numbers);
System.out.println(numbers);
您的方向是正确的,但查看您的文件,它似乎每行包含一个以上的数字,因此您需要处理这个问题。您还需要将它们转换为数字,否则它们将被排序为字符串(意味着“10”出现在“2”之前)。
我不会给你完整的答案,但这里有一些 methods/classes 你可以用来解决这个问题:
您不必使用所有这些,但它们应该能够帮助您找到解决方案。
您不必使用复杂的方法,您只需打开文件
创建扫描仪对象。
1 for循环从文本文件构造数组
1 for 循环查找 lowest/highest 值和所有值的总和。
然后计算平均值并输出所有结果。
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class textToArray {
public static void main(String[] args) throws FileNotFoundException{
//Open the file
File f = new File("C:\Users\YOUR COMPUTER\Desktop\java.txt");//when the file directory contain \ you need to use escape ex "c:\user\desktop"
//Create a new scanner to read the file
Scanner s = new Scanner(f);
//Declare an array with length of 100
int[] array = new int[100];
int i = 0, min, max, sum = 0;
//Loop through the file if there is a next int to process it will continue
for(i = 0; s.hasNextInt(); i++){
//We store every int we read in the array
array[i] = s.nextInt();
}
//Close the scanner object
s.close();
//As the for loop will stop when there is no new int to read so the i++ will stop at the number of int in the file
//We use this number to calculate the average
int nbInArray = i;
//initialize min and max to the first array value which is for now empty
min = max = array[0];
for(int j = 0; j<nbInArray ; j++){
//Now we test if the new value if bigger than the initial value (0 or empty) the new value will become the max
if (array[j]>max){
max = array[j];
}
//Otherwise if the the value is smaller than the initial value the new value will become the minimum
//And so on every time we test if we have a smaller value the new one will become the min
if (array[j]<min){
min = array[j];
}
//The sum was initialised to 0 so we add every new int to it
sum = sum + array[j];
}
//We compute the avg , i declared it double in case we have decimal results
double avg = sum / nbInArray;
//finally we print out the min, max and the average
System.out.println("The minimum is: "+min);
System.out.println("The maximum is: "+max);
System.out.println("The averange is: "+avg);
}
}
我整天都在为这个问题绞尽脑汁,想弄清楚如何做到这一点。我尝试了多种不同的方法,但我觉得我一直在做这一切都是错误的。我的任务是从 .txt 文件中读取 50 个整数并将内容放入排序数组中,然后列出 highest/lowest/average 数字,但我很难通过第一步。
这些是文本文件中的 50 个数字
64 61 169 113 81 61 206 176 39 100 22 200 128 152 59 165 67 116 165 72 26 149 58 204 188 69 203 94 96 134 83 122 192 85 62 159 35 162 95 92 126 66 66 203 187 18 132 182 181 175
在这个文件中,我设法让 "proj8" 文件至少打印出来。
import java.util.Scanner;
import java.io.IOException;
import java.util.ArrayList;
import java.util.*;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.List;
import java.io.*;
public class ect7{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("proj8.txt"));
String line = br.readLine();
while ((line = br.readLine()) != null) {
System.out.println(line);
}
br.close();
}
}
在这个文件中,我设法打印了 "proj8" 文件并对其进行了一些排序,但太疯狂了。
import java.util.Scanner;
import java.io.IOException;
import java.util.ArrayList;
import java.util.*;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.List;
import java.io.*;
public class ect73{
public static void main(String[] args) throws IOException {
//int [] myArr = new int[50];
//FileReader fr = new FileReader("proj8.txt");
BufferedReader br = new BufferedReader(new FileReader("proj8.txt"));
List<String> lines = new ArrayList<String>();
String line = null;
//String line = br.readLine();
while ((line = br.readLine()) != null) {
lines.add(line);
Collections.sort(lines);
//System.out.println(line);
System.out.println(lines);
}
br.close();
//return lines.toArray(new String[lines.size()]);
}
}
我知道我做错了,但我不知道如何做对。我需要能够将 .txt 文件以整数形式输入到排序数组中,然后列出 highest/lowest/average 数字。任何帮助都是很好的帮助,但是代码越简单越好。
您正在尝试对文件的行进行排序,其中包含由 space 分隔的多个数字。您必须将每一行拆分为数字,对于每个数字,您必须将其解析为 Integer
并将其存储在 ArrayList
中。最后你可以对 ArrayList
.
BufferedReader br = new BufferedReader(new FileReader("proj8.txt"));
List<Integer> numbers = new ArrayList<Integer>();
String line = null;
//String line = br.readLine();
while ((line = br.readLine()) != null) {
String []strNumbers = line.split(" ");
for(String strNumber : strNumbers){
numbers.add(Integer.parseInt(strNumber));
}
//System.out.println(line);
}
br.close();
Collections.sort(numbers);
System.out.println(numbers);
您的方向是正确的,但查看您的文件,它似乎每行包含一个以上的数字,因此您需要处理这个问题。您还需要将它们转换为数字,否则它们将被排序为字符串(意味着“10”出现在“2”之前)。
我不会给你完整的答案,但这里有一些 methods/classes 你可以用来解决这个问题:
您不必使用所有这些,但它们应该能够帮助您找到解决方案。
您不必使用复杂的方法,您只需打开文件 创建扫描仪对象。 1 for循环从文本文件构造数组 1 for 循环查找 lowest/highest 值和所有值的总和。 然后计算平均值并输出所有结果。
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class textToArray {
public static void main(String[] args) throws FileNotFoundException{
//Open the file
File f = new File("C:\Users\YOUR COMPUTER\Desktop\java.txt");//when the file directory contain \ you need to use escape ex "c:\user\desktop"
//Create a new scanner to read the file
Scanner s = new Scanner(f);
//Declare an array with length of 100
int[] array = new int[100];
int i = 0, min, max, sum = 0;
//Loop through the file if there is a next int to process it will continue
for(i = 0; s.hasNextInt(); i++){
//We store every int we read in the array
array[i] = s.nextInt();
}
//Close the scanner object
s.close();
//As the for loop will stop when there is no new int to read so the i++ will stop at the number of int in the file
//We use this number to calculate the average
int nbInArray = i;
//initialize min and max to the first array value which is for now empty
min = max = array[0];
for(int j = 0; j<nbInArray ; j++){
//Now we test if the new value if bigger than the initial value (0 or empty) the new value will become the max
if (array[j]>max){
max = array[j];
}
//Otherwise if the the value is smaller than the initial value the new value will become the minimum
//And so on every time we test if we have a smaller value the new one will become the min
if (array[j]<min){
min = array[j];
}
//The sum was initialised to 0 so we add every new int to it
sum = sum + array[j];
}
//We compute the avg , i declared it double in case we have decimal results
double avg = sum / nbInArray;
//finally we print out the min, max and the average
System.out.println("The minimum is: "+min);
System.out.println("The maximum is: "+max);
System.out.println("The averange is: "+avg);
}
}