public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("type the sentence you want to find the letters of");
String sentence = s.nextLine();
getLetters(sentence);
}
public static void getLetters(String sentence) {
int count;
char ch[] = sentence.toCharArray();
for (int i = 0; i < sentence.length(); i++) {
System.out.print(ch[i]);
}
}
我试图在一个句子中显示每个字母(仅限字母)的出现,我迷路了。我已将字符串转换为char数组,但现在我已经丢失了。
例如,如果我输入句子:“你好,你好吗?” 结果将是:
Occurrence of h: 1
Occurrence of e: 2
Occurrence of l: 2
Occurrence of o: 3
etc..
我知道我需要利用我的int计数,但我不知道该怎么做。我们的教授正在让我们使用它:
c[26];
c[ch - 'a']++;
而且我不确定在这个小项目中使用它们的位置。
修改:更新
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("type the sentence you want to find the letters of");
String sentence = s.nextLine();
getLetters(sentence);
}
public static void getLetters(String sentence) {
sentence = sentence.toLowerCase();
int count[];
char ch[] = sentence.toCharArray();
for (int i = 0; i < sentence.length(); i++) {
System.out.print(ch[i]);
}
char alphabet[] = "abcdefghijklmnopqrstuvwxyz".toCharArray();
System.out.println();
}
}
答案 0 :(得分:1)
使用HashMap<Character, Integer>
跟踪。键是唯一的字符,整数计算您看到它的次数。
import java.util.HashMap;
public class J {
public static void main(String[] args) {
String string = "aaaabbbccd";
HashMap<Character, Integer> map = frequency(string);
System.out.println(map);
}
public static HashMap<Character, Integer> frequency(String string) {
int length = string.length();
char c;
HashMap<Character, Integer> map = new HashMap<Character, Integer>();
// loop thru string
for (int i = 0; i < length; i++) {
c = string.charAt(i);
// If u have already seen that character,
// Increment its count
if (map.containsKey(c)) {
map.put(c, map.get(c) + 1);
// otherwise this is the first time u
// have seen it, so set count to 1
} else {
map.put(c, 1);
}
}
return map;
}
}
输出:
{a=4, b=3, c=2, d=1}
答案 1 :(得分:1)
我没有在这里看到使用HashMap的理由。 HashMaps用于将一些值映射到内存中的位置,以便使用HashFunction更快地访问。在这种情况下,他将使用相同或非常相似的数组和这个给定给他的映射函数(ch - &#39; a&#39;)。此外,对于正在这样做的人来说,HashMap可能还为时过早。
你的问题是你没有理解的想法。 java中的字母有值(您可以检查ASCII表)。你有26个字母,第一个是&#39; a&#39;最后是&#39; z&#39;。所以你想拥有26个元素的数组。每当你有一个&#39;在你的字符串中,你想要在数组中将元素增加到0,当你进入&#39; b&#39;你希望增加元素1 ...当你来到&#39; z&#39;因此,事实上(ch - &#39; a&#39;)你将你的字母映射到数组中的位置,其中是它的发生次数。
你接受字符串,做.toLowerCase()大小写,传递一次计数字母,然后打印你找到的东西。