Java 数一数重复的信件
我想得到一个字符串,计算字符串中的任何字母在字符串中出现的次数,并打印字母和数字,以便我所做的:Java 数一数重复的信件,java,string,int,arrays,Java,String,Int,Arrays,我想得到一个字符串,计算字符串中的任何字母在字符串中出现的次数,并打印字母和数字,以便我所做的: import java.util.Scanner; public class test1 { public static void main(String[] args) { String str; Scanner in = new Scanner(System.in); System.out.println("enter name"); str = in.nextL
import java.util.Scanner;
public class test1 {
public static void main(String[] args) {
String str;
Scanner in = new Scanner(System.in);
System.out.println("enter name");
str = in.nextLine();
char[] c1 = str.toCharArray();
int[] f = new int[str.length()];
for(int i=0;i<str.length();i++) {
for(int j=0;j<str.length();j++) {
if(c1[i]==c1[j]) {
f[i]++;
}
}
}
for(int k=0;k<c1.length;k++) {
for(int l=0;l<c1.length;l++) {
if(c1[k]==c1[l]) {
if(l!=k) {c1[k]=0;f[k]=0;}
}
}
System.out.println(c1[k]+"="+f[k]);
}
}
}
有两个问题:
1.当我打印时,它会将重复的字母打印两次或三次以上,这取决于字母在字符串中的次数。
因此,我添加了另外2个loopsk和l来删除重复的字母,但现在不是重复的字母,而是打印我:一个正方形和一个零,我如何从char和int数组中删除字母和数字?例如,当我输入名称elichai时,我得到:
e=1
l=1
平方等于0
c=1
h=1
a=1
i=2
2.删除的字母是第二个字母,而不是第一个
在elichai示例中,删除了第一个“i”,而不是第二个“i”
谢谢 解决问题的方法不同,但我可能会这样做:
String input = "Whatever";
Map<Character, Integer> charCounter = new LinkedHashMap<>(); // respects insertion order
for (char c : input.replaceAll("\\s+", "").toCharArray()) { // ignore spaces
Integer count = charCounter.get(c);
count = count == null ? 0 : count;
charCounter.put(c, count + 1);
}
System.out.println(charCounter);
我听说StringUtils无法解析它在Apache Commons库中。你能解释一下你做了什么吗?我从来没有见过这样的for循环。最后一件事是我需要它以正确的顺序,你做了什么混合顺序它是先打印“v”字母而不是“w”。谢谢@elichai2:看看LinkedHashMap而不是HashMap代码的变化。搜索增强的for循环,例如最后一件事,我如何告诉它忽略空格?我尝试了:ifcharCounter.getc=''{count=null;}或:ifcharCounter.getc=''{count=0;}但没有成功,谢谢@elichai2:查看代码编辑,忽略所有类型的空格。?是条件运算符。A.b:c表示如果a为真,它将计算为b,否则为c。这需要在这里完成,因为当我们第一次遇到一个字符charCounter.getc;将返回null,因为它以前没有放在映射中。
class Twice_Occuring
{
void main(String s)
{
int count=0;
for(int i=0;i<s.length();i++)
{
char c=s.charAt(i);
int ind1=s.indexOf(c,i);
int ind2=s.indexOf(c,i+1);
if(ind2-ind1==1)
{System.out.print(c+" ");count++;}
}
System.out.println("\n Number of counts = "+count);
}
}