簡體   English   中英

計算字符串Java中的字母

[英]Count letters in a string Java

我正在做一個作業,在該作業中,我將必須編寫程序以讀取用戶的字符串,並打印出字符串中出現次數的字母。 例如,“ Hello world”應打印出“ h = 1 e = 1 l = 3 o = 2 ...等”,但是我只寫“ hello world”和字母總數。 我不能使用hashmap函數,只能使用數組。 有人可以給我一兩個提示,告訴您如何從下面的書面代碼繼續進行操作以獲得我的首選功能嗎? 我不完全了解如何將書面輸入保存在數組中。

到目前為止,這是我的代碼。

public class CountLetters {
    public static void main( String[] args ) {
        String input = JOptionPane.showInputDialog("Write a sentence." );
        int amount = 0;
        String output = "Amount of letters:\n";

        for ( int i = 0; i < input.length(); i++ ) {
            char letter = input.charAt(i);
            amount++;
            output = input;
        }
        output += "\n" + amount;
        JOptionPane.showMessageDialog( null, output,
                             "Letters", JOptionPane.PLAIN_MESSAGE ); 
    }
}

您不需要26個switch盒。 只需使用簡單的代碼來計算字母:

    String input = userInput.toLowerCase();// Make your input toLowerCase.
    int[] alphabetArray = new int[26];
    for ( int i = 0; i < input.length(); i++ ) {
         char ch=  input.charAt(i);
         int value = (int) ch;
         if (value >= 97 && value <= 122){
         alphabetArray[ch-'a']++;
        }
    }

完成計數操作后,將結果顯示為:

 for (int i = 0; i < alphabetArray.length; i++) {
      if(alphabetArray[i]>0){
        char ch = (char) (i+97);
        System.out.println(ch +"  : "+alphabetArray[i]);   //Show the result.
      }         
 }
  • 創建一個長度為26的整數數組。
  • 迭代字符串的每個字符,增加與每個字符關聯的數組中存儲的值。
  • 每個字符在數組中的索引由x - 'a'對於小寫字符)和x - 'A'對於大寫字符)計算得出,其中x是特定字符。

您可以創建一個數組,第一個元素將代表'a',第二個元素'b',依此類推。如果需要區分大小寫,則可以在末尾添加它。 此數組的開頭將具有等於0的所有值。 然后,您遍歷句子,並在數組上增加所需的值。 最后,您打印所有大於0的值。簡單嗎?

讓我知道您是否需要更多幫助

不,您不應該創建一個26的數組。如果字符串包含意外的字符,這將中斷。 (ä,ö,ü有人嗎?)正如我指出的那樣,我使用的是地圖。 這將對所有可能的字符起作用。

導入java.io. *;

公共類CharCount {

public static void main(String[] args) throws IOException
{
    int i,j=0,repeat=0;
    String output="",input;
    char c=' ';
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    System.out.println("enter name ");
    input=br.readLine();
    System.out.println("entered String ->\""+input+"\"");
    input=input.toLowerCase();

    for(i=0;i<input.length();i++)
    {
        for(j=0;j<output.length();j++)
        {
            if(input.charAt(i)==output.charAt(j) || input.charAt(i)==c)
            {
                repeat=1;
                break;
            }
        }
        if(repeat!=1)
        {
            output=output+input.charAt(i);
        }
        repeat=0;
    }

    System.out.println("non-reepeated chars in name ->\""+output+"\"");

    int count[]=new int[output.length()];
    for(i=0;i<output.length();i++)
    {
        for(j=0;j<input.length();j++)
        {
            if(output.charAt(i)==input.charAt(j))
                count[i]=count[i]+1;
        }
    }
    for(i=0;i<output.length();i++)
        System.out.println(output.charAt(i)+"- "+count[i]);
}

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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