我需要从这个文件中找到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();
}
答案 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);
}
}