文件核心Java编程中每行中字母的最高频率
人满为患, 需要Java建议和代码来读取文件(file.txt)并向控制台打印文件每行中出现频率最高的所有字母的列表,然后是频率 字母列表应该是按字母顺序排列的大写字母列表,然后是按字母顺序排列的小写字母列表文件核心Java编程中每行中字母的最高频率,java,Java,人满为患, 需要Java建议和代码来读取文件(file.txt)并向控制台打印文件每行中出现频率最高的所有字母的列表,然后是频率 字母列表应该是按字母顺序排列的大写字母列表,然后是按字母顺序排列的小写字母列表 示例输入文件(File.txt) 在单行道上向后骑自行车时,如果 一艘独木舟的车轮坠落,需要多少个滚珠轴承才能装满 在水牛身上爬吗? 你好,霍华德 样本输出 e6 al 7 a 3 二氧化氯 示例代码: public class ReadFileFromSystem{ p
示例输入文件(File.txt) 在单行道上向后骑自行车时,如果 一艘独木舟的车轮坠落,需要多少个滚珠轴承才能装满
在水牛身上爬吗?
你好,霍华德
样本输出 e6
al 7
a 3
二氧化氯 示例代码:
public class ReadFileFromSystem{
public static void main(String args[]){
BufferedReader in = new BufferedReader(new FileReader("C:/input.txt"));//the file containing lines.
HashMap<Character,Integer> lettercount = new HashMap<Character, Integer>();
int counter =0;
// string buffer for file reading
StringBuffer str;
// reading line by line from file
while ((str = in.readLine()) != null) {
// process each characters
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (Character.isLetter(c)){
if(counter>1){
counter++;
}else{
lettercount.put(c,1);
}
}
}
System.out.println("The Alphabet"+c+" has a highest frequency of "+counter);
}
公共类ReadFileFromSystem{
公共静态void main(字符串参数[]){
BufferedReader in=new BufferedReader(new FileReader(“C:/input.txt”);//包含行的文件。
HashMap lettercount=新HashMap();
int计数器=0;
//用于文件读取的字符串缓冲区
StringBuffer str;
//从文件中逐行读取
而((str=in.readLine())!=null){
//处理每个字符
对于(int i=0;i1){
计数器++;
}否则{
字母计数。put(c,1);
}
}
}
System.out.println(“字母“+c+”的最高频率为“+计数器”);
}
提示:
- 考虑为每一行读取填充一个
,映射中的整数值表示遇到的每个字符的频率映射
- 在填充
可以记住迄今为止遇到的最高频率(例如5)地图时
- 填充
可以遍历其内容并打印频率等于遇到的最高频率的任何字母映射后
祝你好运!看起来你几乎拥有了它。你需要在
循环中初始化一个新的映射,同时在for
循环中使用它来收集数据
您只使用了一个计数器变量。相反,您需要使用映射来保存多个计数器,每个字符一个计数器
以下是您要执行的psuedo代码:
for each line in the file:
initialize an empty Map<String, Integer>
for each character in the line:
if the map contains the character:
increment the count for that char in the map
else:
add the character to the map with a count of 1
iterate through the map and find the highest values, and print their keys
在此结束时,字符串字符
将包含行中重复次数最多的字符。maxCount
将包含计数。这是家庭作业吗?如果是,请添加适当的标记。您需要建议还是代码?(即,您想学习,还是只想将代码复制到作业中?)但是解决起来并不容易,我已经尝试过解决这个问题。如何为如此复杂的过程维护数据结构。如何存储字母的最高频率在每一行的文件中,我不认为这是直截了当的,因为我已经详细地编写了代码,你可以帮助我进一步…我被困在你的进一步。你们可以改进我的代码吗?请在这之后我需要帮助。我迷失了你可以修改我的代码,让我知道我犯了什么错误,请我想从我的代码中得到答案jjngguy@jjnguy,我看到了updates到你的帖子顶部。你能粘贴我的代码并修改它,然后告诉我答案是什么吗。我正在努力使这个结尾部分正确。@Deepak,我已经添加了一个例子,说明你的for循环应该是什么样子。感谢所有Stackoverflow memebers,u使之成为可能。遍历映射并找到最高值,然后打印它们的keys--您也可以共享此部分的代码吗
lettercount = new HashMap<Character, Integer>();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (Character.isLetter(c)){
if(lettercount.containsKey(c)){
lettercount.get(c)++;
}else
lettercount.put(c,1);
}
}
// here we find the max occurances
int maxCount = 0;
for(Integer count: lettercount.values())
if (count > maxCount) maxCount = count;
// now we find the entries that had that many occurances
String characters = "";
for (Entry<Character, Integer> entry: lettercount.entrySet()) {
if (entry.getValue().equals(maxCount))
characters += entry.getKey();
}