我只是想知道如何将 for(char c:str.toCharArray())转换为简化循环。我试过了
for(int i = 0; i <= str.length(); i++)
{
char[] c = str.toCharArray();
然而它似乎没有起作用。它是一个计算字符串中字母出现的程序。顺便说一下这不是功课。我只是想练习回到事物的摇摆。任何指导都将非常感谢。完整代码。
String str = "this is my new string";
HashMap<Character, Integer> map = new HashMap<Character, Integer>();
for(int i = 0; i <= str.length(); i++)
{
char[] c = str.toCharArray();
if(!map.containsKey(c))
map.put(c,1);
else
{
int value = map.get(c);
map.put(c, ++value);
}
}
System.out.println(map);
答案 0 :(得分:4)
尝试String#charAt()方法:
for(int i = 0; i <= str.length(); i++) {
char c = str.charAt(i);
// ...
}
答案 1 :(得分:2)
嗯,你实际上是使用整个数组而不是一个元素。您应该从for循环中取出从字符串到字符数组的转换,并在循环中使用c [i]。
之前,您所做的是每次检查由{'t','h',...}组成的数组是否包含在您的地图中,而不仅仅是检查每个字符。 其他人建议的charAt()是一种很好的方法,可以在不使用额外变量的情况下做你想做的事。
String str = "this is my new string";
HashMap<Character, Integer> map = new HashMap<Character, Integer>();
char[] c = str.toCharArray();
for(int i = 0; i <= str.length(); i++)
{
if(!map.containsKey(c[i]))
map.put(c[i],1);
else
{
int value = map.get(c[i]);
map.put(c[i], ++value);
}
}
System.out.println(map);
答案 2 :(得分:1)
您正在寻找charAt(i)
而不是toCharArray()
。
答案 3 :(得分:0)
与编译器在此处所做的相同的是
char[] chrs = str.toCharArray();
for(int i = 0; i < chrs.length; i++) {
char c = chrs[i];
// ...
}
答案 4 :(得分:0)
if(!map.containsKey(c))
这里c是字符数组而不是字符。所以你遇到了问题。
public static void main(String[] args) {
String str = "aabbccdefgh";
Map<Character, Integer> map = new HashMap<Character, Integer>();
for (int i = 0; i < str.length(); i++) {
Integer count = map.get(str.charAt(i));
if (count == null)
map.put(str.charAt(i), 1);
else
map.put(str.charAt(i), count + 1);
}
}
试试这个。