📅  最后修改于: 2023-12-03 15:12:41.110000             🧑  作者: Mango
本题来自门(GATE)计算机科学专业的2005年考试,题号为CS-2005第77题。此题为编程题,要求考生编写一个程序。
编写一个程序,该程序从指定的文件中读取一组整数,并根据以下规则生成一组新的整数:
函数原型如下:
int[] getDifferences(String fileName, int m);
其中,参数fileName为输入文件名,参数m为要分成的组数。
输入文件中的第一行将是一个整数,此整数表示输入的整数数组中有多少个整数。接下来的每行将包含整数数组的一个元素。
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class Main {
public static int[] getDifferences(String fileName, int m) throws IOException {
int[] nums = Files.lines(Paths.get(fileName)).mapToInt(Integer::parseInt).toArray();
int size = nums.length / m;
int[] result = new int[m];
for (int i = 0; i < m; i++) {
int start = size * i;
int end = i == m - 1 ? nums.length : start + size;
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
for (int j = start; j < end; j++) {
if (nums[j] > max) max = nums[j];
if (nums[j] < min) min = nums[j];
}
result[i] = max - min;
}
return result;
}
public static void main(String[] args) {
try {
int[] result = getDifferences("input.txt", 3);
for (int r : result) {
System.out.print(r + " ");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
此程序使用Java语言编写,利用Java 8的新特性和NIO包中的Files读取文件中的整数,然后按照题目要求的规则处理整数,并返回新的整数数组。
程序中getDifferences方法接收一个文件名fileName和一个整数m,其中fileName为输入文件名,m为要分成的组数。在方法中,读取文件中的整数,并通过size变量计算每个部分的大小。然后使用一个for循环,分别对每个部分进行处理,并将结果存储在result数组中,最后返回result数组。
在main方法中,调用getDifferences方法,并将结果输出到控制台。
此程序通过使用Java语言和NIO包中的Files读取文件中的整数,实现了按照题目要求的规则处理整数,并返回新的整数数组的功能。此题考查了程序员对于文件读取,数组处理和循环语句等基础知识的掌握程度。