首页 > 其他分享 >课堂测试

课堂测试

时间:2022-10-21 16:56:05浏览次数:48  
标签:java String get list 测试 import new 课堂

 

 

package numberone;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
public class word2 {
public static void main(String[] args)throws IOException//扔掉很重要
{
File file = new File("D:\\哈利波特英文版\\哈利波特英文版\\Harry Potter and the Order of the Pheonix.txt");
System.out.println("1.统计英文单词个数"+" "+"2.统计字母个数");
Scanner sc = new Scanner(System.in);
int value=sc.nextInt();

switch(value) {

case 1:txtString2(file);
break;
case 2:txtString(file);

}
}




/*
* 统计字母
*/
public static void txtString(File file) throws IOException{
try {
//IO操作读取文件内容
FileReader fr = new FileReader(file);
@SuppressWarnings("resource")
BufferedReader br = new BufferedReader(fr);//构造一个BufferedReader类来读取文件
HashMap<String,Integer> hm = new HashMap<String,Integer>();//构建了一个新的HashMap对象,强制指定这个HashMap必须是以String为key, 以Integer为值。
String line =null;
Integer count = 0;//每个字母的个数
Integer total = 0;//统计字母总数,作百分比用
char ch;
while ((line=br.readLine())!=null) {
for(int j=0;j<line.length();j++) {
ch=line.charAt(j);
if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')) {//将字符串对象中的字符转换为一个字符数组。
total = total + 1;

count=hm.get(ch+"");
if(count==null) {
count=1;
}
else {
count++;
}
hm.put(ch+"",count);
}
}
}
/*

for (String str : hm.keySet()) {//设变量str获取键
lv=list.get(list.size()-i-1).getValue()*1.0/total*100;
System.out.println(str+"个数:"+hm.get(str)+" "+String.format("%.2f", lv)+"%");
}*/
System.out.println("总字母个数:"+total);

List<Map.Entry<String ,Integer>> list = new ArrayList<Map.Entry<String,Integer>>(hm.entrySet());
//在java中,如果要对集合对象或数组对象进行排序,需要实现Comparator接口以达到我们想要的目标
Comparator<Map.Entry<String,Integer>> comparator = new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> left, Map.Entry<String, Integer> right) {
return (left.getValue().compareTo(right.getValue()));
}
};
// 集合默认降序
Collections.sort(list,comparator);
double lv=0;
for(int i=0;i<52;i++){// 由高到低输出
lv=list.get(list.size()-i-1).getValue()*1.0/total*100;
System.out.println(list.get(list.size()-i-1).getKey() +":"+list.get(list.size()-i-1).getValue()+" "+String.format("%.2f", lv)+"%");
}

} catch (FileNotFoundException e) {
e.printStackTrace();
}
}


/*
* 统计单词
*/
public static void txtString2(File file) throws IOException{
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);//构造一个BufferedReader类来读取文件
StringBuffer sb = new StringBuffer();
String line =null;
while ((line=br.readLine())!=null){
sb.append(line);//将读取出的字符追加到stringbuffer中
}
fr.close();
// 关闭读入流
String str = sb.toString().toLowerCase(); // 将stringBuffer转为字符并转换为小写
String[] words = str.split("[^(a-zA-Z)]+"); // 非单词的字符来分割,得到所有单词
Map<String ,Integer> map = new HashMap<String, Integer>() ;
for(String word :words){
if(map.get(word)==null){ // 若不存在说明是第一次,则加入到map,出现次数为1
map.put(word,1);
}else{
map.put(word,map.get(word)+1); // 若存在,次数累加1
}
}
// 排序
List<Map.Entry<String ,Integer>> list = new ArrayList<Map.Entry<String,Integer>>(map.entrySet());
Comparator<Map.Entry<String,Integer>> comparator = new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> left, Map.Entry<String, Integer> right) {
int i=left.getValue()-right.getValue();
if(i==0) {
return (right.getKey().compareTo(left.getKey()));
}
return (left.getValue().compareTo(right.getValue()));
}
};

// 集合默认升序
Collections.sort(list,comparator);
int n=list.size();

System.out.println("一共有"+n+"个单词");

for(int i=0;i<n;i++){// 由高到低输出
System.out.print(list.get(list.size()-i-1).getKey() +":"+list.get(list.size()-i-1).getValue()+" ");
}
}


}

 

 

标签:java,String,get,list,测试,import,new,课堂
From: https://www.cnblogs.com/zhaoshengfu/p/16814002.html

相关文章

  • Windows驱动开发环境搭建测试HelloWorld
    主要参考官方链接:https://learn.microsoft.com/zh-cn/windows-hardware/drivers/gettingstarted/writing-a-very-small-kmdf--driver其中注意修改点:双虚拟机安装好win......
  • VS 2008 附加到进程测试 WIndow Service
    前提条件:首先安装windowservice 接受项目的时候,已经装好了不过还是贴一下安装步骤:https://www.jb51.net/article/238742.htm准备测试1.把项目编译一下,在项目所......
  • 如何准备10000条测试数据
    备位服务系统需要进行性能测试,想在测试环境准备10000条测试数据,进行批量扣款测试。如何准备10000条测试数据?​​https://www.jianshu.com/p/d798cfca0239​​......
  • 深度学习模型训练的过程理解(训练集、验证集、测试集、batch、iteration、epoch、单步
    呜呜呜呜,感谢大佬学弟给我讲干货.本来是讨论项目的,后面就跑偏讲论文模型了. 解答了我一直以来的疑问:数据放模型里训练的过程. 假设我们有一个数据集26304条数据,假设设置模......
  • 2022年十大接口测试工具合集《建议.收藏》
    接口测试的全称是应用程序编程接口(API)测试,从原理上来说,接口测试是模拟客户端向服务器端发送请求,然后检查能否获得正确的返回信息。接口测试用于测试RESTfulAPI、SOAPWeb服......
  • 自动化测试哪家强?Apipost用实力来告诉你。
      测试的作用对于一个项目的重要性不言而喻,简单来说就是项目最后的把关者,一个项目的成功与否可能体现在很多种方面,但是如果过不去测试这一关,那前面的一切就是白扯~  对于......
  • 多版本并行,测试如何做好质量保障?
    昨天的文章总结了从软件工程角度,如何进行项目管理相关的知识。正好上周末星球内部直播时候,有同学问了一个问题:他们公司经常存在多版本并行的项目,不知道怎么做好质量保障工......
  • sysbench--OLTP数据库性能测试与服务器基准功能测试工具
     sysbench是一个基于LuaJIT的可编写脚本的多线程基准测试工具。它最常用于数据库基准测试,但也可用于创建不涉及数据库服务器的任意复杂的工作负载。 sysbench的作用:sys......
  • Airtest---UI自动化测试项目
    ​​AirtestProject​​是网易游戏团队新开源出来的一款用于UI自动化测试的项目。testerhome中的文档介绍:​​https://testerhome.com/topics/12486​​官方链接:​​http:/......
  • 【sysbench】read_write测试方法与脚本
    测试工具Sysbench是一个基于LuaJIT的可编写脚本的多线程基准测试工具。它最常用于数据库基准测试,但也可用于创建不涉及数据库服务器的任意复杂工作负载,本次测试将采用Sys......