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