一、实验目的
1. 掌握数组、字符串、向量和哈希表的使用。
二、实验内容
上机实现下列程序并观察程序的运行情况:
1. 编写 Java 程序统计一篇英文文档中各单词出现的次数,并按单词出现的频率由高到低进行输出。
例如:文档“Hello word Hello”的统计结果为:
Hello:2 次
word:1 次
2. 声明一个二维数组,为数组的每个元素赋值,并输出数组的值。
3. 编写一程序,查找某一字符串中是否包含又“abc”。
三、代码
1、统计单词次数
import java.util.*;
public class NO3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入英文文档:");
String document = scanner.nextLine();
String[] words = document.split("\\s+");
Map<String, Integer> wordCounts = new HashMap<>();
for (String word : words) {
word = word.replaceAll("[^a-zA-Z]", "").toLowerCase();
if (!word.isEmpty()) {
wordCounts.put(word, wordCounts.getOrDefault(word, 0) + 1);
}
}
List<Map.Entry<String, Integer>> sortedWordCounts = new ArrayList<>(wordCounts.entrySet());
sortedWordCounts.sort((entry1, entry2) -> entry2.getValue().compareTo(entry1.getValue()));
System.out.println("按单词出现频率由高到低排序的结果为:");
for (Map.Entry<String, Integer> entry : sortedWordCounts)
{
System.out.println(entry.getKey() + ": " + entry.getValue() + "次");
}
}
}
2、二维数组
import java.util.*;
public class NO1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入矩阵的行数:");
int n = scanner.nextInt();
System.out.println("请输入矩阵的列数:");
int m = scanner.nextInt();
int[][] a = new int[n][m];
System.out.println("请输入矩阵的元素:");
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
a[i][j] = scanner.nextInt();
}
}
System.out.println("矩阵的内容如下:");
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
System.out.print(a[i][j] + " ");
}
System.out.println();
}
scanner.close();
}
}
3、查找字符串
import java.util.*;
public class NO2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String str = scanner.nextLine();
System.out.println("请输入查询字符串:");
String target = scanner.nextLine();
if (str.contains(target)) {
System.out.println("字符串中包含子字符串 '" + target + "'");
} else {
System.out.println("字符串中不包含子字符串 '" + target + "'");
}
scanner.close();
}
}