Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-如何以字符串形式更改变量名_Java_Variables_Character - Fatal编程技术网

Java-如何以字符串形式更改变量名

Java-如何以字符串形式更改变量名,java,variables,character,Java,Variables,Character,好吧,也许这有点难理解 我试图计算字符串中的所有字母,并最终打印所有计数,我想知道如何更改循环中字符的计数 目前情况是这样的: for (int i = 0; i<line.length();i++){ line.charAt(i)++; } // assumming your data looks like this: Map<Character, Integer> map = new HashMap<>(); map.put('a', 0); map.

好吧,也许这有点难理解

我试图计算字符串中的所有字母,并最终打印所有计数,我想知道如何更改循环中字符的计数

目前情况是这样的:

for (int i = 0; i<line.length();i++){
    line.charAt(i)++;
}
// assumming your data looks like this:
Map<Character, Integer> map = new HashMap<>();
map.put('a', 0);
map.put('b', 0);
// etc..., you should probably init these in a loop


// then you can do
for (int i = 0; i<line.length();i++){
    map.compute(line.charAt(i), i -> i+1);
}
for(int i=0;i这是不可能的

要正确执行此操作,您应该使用
映射
。将所有这些字母存储在
映射
类型的映射中。然后您可以像这样更新值:

for (int i = 0; i<line.length();i++){
    line.charAt(i)++;
}
// assumming your data looks like this:
Map<Character, Integer> map = new HashMap<>();
map.put('a', 0);
map.put('b', 0);
// etc..., you should probably init these in a loop


// then you can do
for (int i = 0; i<line.length();i++){
    map.compute(line.charAt(i), i -> i+1);
}
//假设您的数据如下所示:
Map Map=newhashmap();
地图放置('a',0);
地图放置('b',0);
//等等,您可能应该在循环中初始化这些
//那你就可以了
对于(int i=0;i i+1);
}

您可以使用
int
数组收集计数

int[] counts = new int[256];
for (int i = 0; i < line.length(); i++){
    counts[line.charAt(i)]++;
}
a = counts['a'];
b = counts['b'];
...
int[]计数=新的int[256];
对于(int i=0;i
如果您只处理小写字母,您可以保留一个计数数组,用于老式的“C风格”方法:

int[] counts = new int[26];
然后在循环中:

counts[line.charAt(i) - 'a']++;

或者,还有更简单的单线方式:

Map<Integer, Long> frequency = line.chars().boxed().collect(Collectors.groupingBy(i -> i, Collectors.counting()));
Map frequency=line.chars().boxed().collect(Collectors.groupingBy(i->i,Collectors.counting());

其中,映射的键是字符的整数值。

如果这是Java问题,则不要将其标记为C。您需要增加变量计数,而不是字符串。我建议使用而不是变量。