0

文字列に出現した回数を文字列に数え、文字と数字を出力したいので、私がしたこと:

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]);
    }
}
}

2 つの問題があります
。だから私は重複した文字を削除する別の2つのループ(kとl)を追加しましたが、重複した文字の代わりに印刷されます:四角とゼロ、文字と数字から文字と数字を削除する方法とint配列の?(たとえば、「elichai」という名前を挿入すると、次のようになります:

e=1
l=1
(正方形)=0
c=1
h=1
a=1
i=2

2. 削除する文字は、最初の文字ではなく 2 番目の文字です
(「elichai」の例では、2 番目の 'i' ではなく最初の 'i' が削除されます)。

4

2 に答える 2

7

あなたの問題を解決するための異なるアプローチですが、これはおそらく私がそれを行う方法です:

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);
于 2013-01-29T19:56:16.433 に答える
0
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);
    }
}
于 2014-09-28T13:37:00.193 に答える