簡體   English   中英

獲取用戶輸入,放入數組並打印出每個字母的使用次數

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

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