java文件digit.txt中存放了若干行的字符串。每行字符串中又包含了若干整数。请编写程序,完成(1)统计其中共有多少个不同的整数;(2)找出这些整数中所有素数,并按素数大到小的顺序输出。
时间: 2024-03-01 15:49:42 浏览: 109
好的,针对你的问题,我可以给出以下Java代码:
```java
import java.io.File;
import java.io.FileNotFoundException;
import java.util.*;
public class Main {
public static void main(String[] args) {
// 读取文件,获取所有整数
Set<Integer> nums = new HashSet<>();
try (Scanner scanner = new Scanner(new File("digit.txt"))) {
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String[] numArray = line.split("\\s+");
for (String num : numArray) {
nums.add(Integer.parseInt(num));
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// 统计不同的整数个数
int numCount = nums.size();
System.out.printf("共有%d个不同的整数\n", numCount);
// 找出素数并按素数大小排序输出
List<Integer> primeNums = new ArrayList<>();
for (int num : nums) {
if (num < 2) {
continue;
}
boolean isPrime = true;
for (int i = 2; i <= Math.sqrt(num); i++) {
if (num % i == 0) {
isPrime = false;
break;
}
}
if (isPrime) {
primeNums.add(num);
}
}
Collections.sort(primeNums, Collections.reverseOrder());
System.out.println("素数列表:" + primeNums);
}
}
```
其中,我们使用`HashSet`数据类型来保存所有出现过的整数,因为`HashSet`可以自动去重,避免了重复计数的问题。然后我们遍历整个`HashSet`,判断其中每个整数是否为素数,将素数保存到一个`ArrayList`中,并按素数大小进行降序排序输出。需要注意的是,读取文件时要使用`Scanner`类,并且在读取完毕后要及时关闭文件流。
阅读全文