计算字符串Java中的字母

我正在做一个任务,我必须编写一个程序来读取用户的字符串,并打印字符串中出现次数的字母。 例如“Hello world”,它应打印出“h = 1 e = 1 l = 3 o = 2 ……等”,但我只写“hello world”和总数字母。 我不能使用hashmap函数,只能使用数组。 有人可以给我一些关于如何从下面的书面代码着手获得我的首选function的提示吗? 我不明白如何在数组中保存书面输入。

到目前为止,这是我的代码。

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的数组。如果字符串包含意外的字符,这将中断。 (ä,ö,ü任何人?)我指出我的评论使用地图。 这将有助于所有可能的角色。

import 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\""+output+"\""); int count[]=new int[output.length()]; for(i=0;i 

}