2015-09-04 163 views
-1

我有一个字符串数组。 (每个字符串只有一个字符,但为了使用扫描器,我必须将它作为一个字符串数组,因为没有input.nextchar。) 我想知道字母表中每个字母有多少在数组中,然后创建基于哪个字母最多的if语句。 我该怎么做? 我是初学者,所以请用最简单的方式解释。 非常感谢你的帮助!计算字符串数组中的每个字母字符Java

+1

您可以使用['String#toCharArray'](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#toCharArray--)或['String#charAt '](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#charAt-int-)从字符串中获取字符。然后使用['Character#isAlphabetic'](https://docs.oracle.com/javase/8/docs/api/java/lang/Character.html#isAlphabetic-int-) – MadProgrammer

+0

如果您完全不知道在何处请看Patricia Shanahan的优秀网页,因为它会给你一些想法:[开始编写程序](http://www.patriciashanahan.com/beginner.html),这是打破大项目的关键过程分成小步骤,然后逐个解决每个小步骤。如果你仍然有问题,那么你可能想考虑与你的老师交谈,或者向我们展示你所做的事情,并且提出一个**更具体的问题或一组问题。祝你好运! –

+0

在设计算法之前,再分析一下这个问题。字母表通常是书写系统中使用的字母的子集,字母不是书写系统中的唯一字符。另外,字母通常具有大写和小写形式。这些问题是否适用于您的输入? –

回答

0

为每个字符创建一个散列表作为其键值并计入其值。 (默认值为0)。 迭代您的字符串数组,从hashmap中获取每个字符,增加计数并将其设置回来。

因此,迭代结束时,您将全部算作字母字符。

然后继续通过您的进一步编码。

如果需要,然后根据值对hashmap进行排序。

1

您可以使用HashMap其中键是字母,值是出现次数。例如:

Map<String, Integer> letterCount = new HashMap<String, Integer>(); 

for (String letter : letters) { //letters is your array of strings 
    if (letterCount.containsKey(letter)) { 
     letterCount.put(letter, letterCount.get(letter) + 1); 
    } else { 
     letterCount.put(letter, 1); 
    } 
} 

现在可以检查特定字母多少次,显示了这样的:

int numberOfEs = letterCount.get("E"); 

你也可以遍历所有的信件通过调用letterCount.keySet(),看看哪一个是最频繁。

0

你想要做的事情可能最好通过使用char数组来完成。

所以ASCII字符65-90代表字符A-Z。

将它转换为int将给你我相信它的ASCII值。 你需要一个int数组来保存26个整数。循环遍历数组,将每个int转换为它的ASCII值并递增该数组的索引。我没有尝试过,但我不明白为什么它不起作用。

最后你可以计算出每个字母出现的次数。

此外,我怀疑介绍他收藏会是一个好主意,因为他是一个初学者。

+0

Java char是一个UTF-16编码单元,其中一个或两个编码Unicode编码点。每个Unicode的基本拉丁字母(A-Z和a-z)的UTF-16编码是一个代码单元。所以,如果输入是同一个案例中的所有基本拉丁字母,那么你的算法就可以工作。 –

相关问题