簡體   English   中英

Java-如何更改名稱為字符串的變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM