[英]Java - How to alter a variable with its name as a String
好吧,也許有點難以理解。
我試圖對字符串中的所有字母進行計數,並最終打印出所有計數,而且我想知道如何在循環中更改字符的計數。
目前它是這樣的:
for (int i = 0; i<line.length();i++){
line.charAt(i)++;
}
我將所有變量名作為一個字符分別表示,例如:int a = 0,b = 0,c = 0,d = 0,e = 0,f = 0等
在這種情況下如何使用++運算符? line.charAt(iter)給我一個字符,但是如何使用該字符作為變量?
這是不可能的。
要正確執行此操作,您應該使用Map
。 將所有這些字母存儲在Map<Character, Integer>
類型的Map<Character, Integer>
。 然后,您可以像這樣更新值:
// 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);
}
您可以使用int
數組來收集計數。
int[] counts = new int[256];
for (int i = 0; i < line.length(); i++){
counts[line.charAt(i)]++;
}
a = counts['a'];
b = counts['b'];
...
如果您只處理小寫字母,則可以保留舊式“ 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()));
映射的鍵是char的整數值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.