![](/img/trans.png)
[英]How do I take an input and make the program print out each letter on a new line while making every space encounter to print out “<space>”?
[英]Take user input, put into an array and print out how many times each letter is used
我正在嘗試編寫這個程序,以便當用戶輸入一行文本時,會給出一個圖表,顯示每個字母的使用次數。 我把它分成了一個數組,但我不斷收到“計數[字母[a] =='a'] ++;”的錯誤 說我不能將字符串轉換為char或布爾值轉換為int,具體取決於我的方式。 我無法弄清楚為什么它不是所有的char。
import java.util.*;
public class AnalysisA { //open class
public static String input;
public static String stringA;
public static void main (String args []) { //open main
System.out.println("Please enter a line of text for analysis:");
Scanner sc = new Scanner(System.in);
input = sc.nextLine();
input = input.toLowerCase();
System.out.println("Analysis A:");//Analysis A
System.out.println(AnalysisA(stringA));
} // close main
public static String AnalysisA (String stringA) { // open analysis A
stringA = input;
char[] letters = stringA.toCharArray();
int[] counts = new int[26];
for (int a = 0; a < letters.length; a++) { //open for
counts[letters[a] == 'a']++;
System.out.print(counts);
} //close for
}
表達式letters[a] == 'a'
產生一個布爾答案(1或0),但你有一個索引數組,它必須是一個int。
你基本上告訴Java的是做counts[true]++
或counts[false]++
,這是沒有意義的。
你真正想要的是一個HashMap
,它將每個字符映射到你在數組中看到它的次數。 我不會在這里給出答案,但是在Java中查找HashMaps,你會找到你需要的線索。
count [___]期望一個Integer索引,而你的表達式letters[a] == 'a'
返回一個布爾值
我猜你每次收到一封信時都試圖將'Dictionary'值增加1。 您可以通過制作letters[a] - 'a'
來獲取索引
由於ASCII表中的順序,如果減去另一個字母,則字母'a'等於97,如果'b'為98,則將產生索引1,這是你的base26'字典'的正確位置
額外:
for (int i = ...
如果你的名字你我 ndex像索引( 我不是,它很容易混合變量上) 'B' - 'a'
和'b' - 'a'
是兩個截然不同的東西。 如果你使用地圖,你可以輕松地做到這一點,而不會復雜化..
Map<Character, Integer> map = new HashMap<Character, Integer>();
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
public class AnalysisA { // open class
public static String input;
public static void main(String args[]) { // open main
System.out.println("Please enter a line of text for analysis:");
Scanner sc = new Scanner(System.in);
input = sc.nextLine();
input = input.toLowerCase();
sc.close();
System.out.println("Analysis A:");// Analysis A
System.out.println(Analysis());
} // close main
public static String Analysis() { // open analysis A
Map<Character, Integer> map = new HashMap<Character, Integer>();
char[] letters = input.toCharArray();
Integer count;
for (char letter : letters) {
count = map.get(letter);
if (count == null || count == 0) {
map.put(letter, 1);
} else {
map.put(letter, ++count);
}
}
Set<Character> set = map.keySet();
for (Character letter : set) {
System.out.println(letter + " " + map.get(letter));
}
return "";
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.