文件digit.txt中存放了若干行的字符串。每行字符串中又包含了若干整数。请编写程序,完成(1)统计其中共有多少个不同的整数;(2)找出这些整数中所有素数,并按素数大到小的顺序输出。java代码
时间: 2024-02-21 14:57:27 浏览: 74
C#统计字符串中数字个数的方法
以下是 Java 代码实现:
```java
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 读取文件内容
String content = "";
try {
File file = new File("digit.txt");
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
content += scanner.nextLine() + "\n";
}
scanner.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// 将文件内容分割成行
String[] lines = content.split("\n");
// 将整数存储在一个 set 中,统计不同的整数个数
HashSet<Integer> intSet = new HashSet<Integer>();
for (String line : lines) {
// 将每行字符串分割成整数列表
String[] numsStr = line.split(" ");
for (String numStr : numsStr) {
int num = Integer.parseInt(numStr);
intSet.add(num);
}
}
System.out.println("共有 " + intSet.size() + " 个不同的整数");
// 找出素数并按素数大到小的顺序输出
List<Integer> primes = new ArrayList<Integer>();
for (int num : intSet) {
// 判断是否为素数
boolean isPrime = true;
if (num < 2) {
isPrime = false;
} else {
for (int i = 2; i <= Math.sqrt(num); i++) {
if (num % i == 0) {
isPrime = false;
break;
}
}
}
// 将素数加入 primes 列表中
if (isPrime) {
primes.add(num);
}
}
primes.sort((a, b) -> b - a);
System.out.println("素数列表:" + primes);
}
}
```
这段代码首先读取文件内容,将其分割为行,再将每行字符串分割为整数列表,并将整数存储在一个 HashSet 中,统计不同的整数个数。然后,根据素数的定义,判断整数是否为素数,并将素数存储在一个列表中。最后,按素数大到小的顺序输出素数列表。
阅读全文