public static void main(String[] args) {
int a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,i1=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z = 0;
/初始化变量并计算每次匹配./
System.out.println("enter the string");
Scanner sc= new Scanner(System.in);
String s1=sc.nextLine();
/我从用户
获取字符串作为i / p int a = 0;
for(int i=0;i<(s1.length());i++)
{
if (s1.charAt(i)=='a')
{
a++;
}
if (s1.charAt(i)=='b')
{
b++;
} if (s1.charAt(i)=='c')
{
c++;
} if (s1.charAt(i)=='d')
{
d++;
} if (s1.charAt(i)=='e')
{
e++;
} if (s1.charAt(i)=='f')
{
f++;
} if (s1.charAt(i)=='g')
{
g++;
} if (s1.charAt(i)=='h')
{
h++;
}
if (s1.charAt(i)=='i')
{
i1++;
}
if (s1.charAt(i)=='j')
{
j++;
} if (s1.charAt(i)=='k')
{
k++;
} if (s1.charAt(i)=='l')
{
l++;
} if (s1.charAt(i)=='m')
{
m++;
} if (s1.charAt(i)=='m')
{
m++;
} if (s1.charAt(i)=='n')
{
n++;
} if (s1.charAt(i)=='o')
{
o++;
} if (s1.charAt(i)=='p')
{
p++;
} if (s1.charAt(i)=='q')
{
q++;
} if (s1.charAt(i)=='r')
{
r++;
} if (s1.charAt(i)=='s')
{
s++;
} if (s1.charAt(i)=='t')
{
t++;
} if (s1.charAt(i)=='u')
{
u++;
} if (s1.charAt(i)=='v')
{
v++;
} if (s1.charAt(i)=='w')
{
w++;
}
if (s1.charAt(i)=='x')
{
x++;
} if (s1.charAt(i)=='y')
{
y++;
} if (s1.charAt(i)=='z')
{
z++;
}
/...................................adkjagkdgakjdjakdjg/
}
但是不可能再次为打印再写整个26个变量...请给我另一个选项。
答案 0 :(得分:2)
最好的方法是使用int
26
元素数组。让我们初始化26个元素的数组: -
int[] array=new int[26];
现在可以认为0th
元素是a
,1st
元素是b
,依此类推。现在假设我们有字符串str
。现在迭代字符串到它的结尾。
for(int i=0;i<str.length();i++)
{
array[str.charAt(i)-'a']++; //Storing occurrence of characters in array
}
现在我们在数组中出现了字符,只是迭代array
得到所有值的打印。
for(int i=0;i<26;i++)
{
char ch=(char)('a'+i);
System.out.println(ch+":"+array[i]);
}
或者,如果您只想打印出现的字符: -
for(int i=0;i<26;i++)
{
char ch=(char)('a'+i);
if(array[i]>0)
System.out.println(ch+":"+array[i]);
}
答案 1 :(得分:0)
您可以尝试使用Map
String str = "occurrences";
Map<String, Integer> map = new HashMap<>();
for (char i : str.toCharArray()) {
Integer value = map.get(i + "");
if (value != null) {
map.put(i + "", value + 1);
} else {
map.put(i + "", 1);
}
}
的System.out.println(地图);
Out put:
{u=1, e=2, s=1, r=2, c=3, n=1, o=1}
答案 2 :(得分:0)
如评论中所述,如果您想要将唯一键与值(在您的情况下,字符及其出现次数)相关联,则Map<Character,Integer>
是正确的选择。
有很多网站教你如何使用地图。 Here's one for starters。我不会用勺子喂你代码,因为你显然是想学习。
答案 3 :(得分:0)
根据评论中的建议,请使用Map
。
例如:
System.out.println("enter the string");
Scanner sc= new Scanner(System.in);
String s1=sc.nextLine();
if (s1 != null && !s1.isEmpty()) {
// will display character counts alphabetically
Map<Character, Integer> count = new TreeMap<Character, Integer>();
char[] chars = s1.toCharArray();
for (char c: chars) {
// no count yet for this character
if (count.get(c) == null) {
count.put(c, 1);
}
// this character appeared at least once: incrementing count
else {
count.put(c, count.get(c) + 1);
}
}
System.out.println(count);
}
<强>输出强>
enter the string
abcdeff
{a=1, b=1, c=1, d=1, e=1, f=2}
答案 4 :(得分:0)
HashMap<Character, Integer> charCountMap = new HashMap<Character, Integer>;
for(int i=0;i<(s1.length());i++)
{
Integer count = charCountMap(s1.charAt(i));
if(count == null){
charCountMap.put(1);
} else {
charCountMap.put(++count);
}
}
获取a:
的出现次数 int count = charCountMap.get('a');
答案 5 :(得分:0)
您可以使用ascii值来实现这一目标。
String s;
int[] arr = new int[26];
for(char x : s.toLowerCase().toCharArray()){
arr[x-97]++;
}
for(int i=0; i<arr.length; i++){
System.out.println("Count of "+(char)(97+i)+" :"+arr[i]);
}
答案 6 :(得分:0)
int[] array = new int[256];
String str = "sdfdagfvdsgfrewfwqafasfdfa";
for (int i = 0; i < str.length(); i++) {
array[str.charAt(i)]++;
}
for (int i = 'a'; i <= 'z'; i++) {
if (array[i] > 0) {
System.out.println((char) i + ":" + array[i]);
}
}
答案 7 :(得分:0)
使用2D数组可以执行以下操作
公共类计数器{private String[][] letterArray;
Counter(){
String letter = "abcdefghijklmnopqrstuvwxyz";
letterArray = new String[26][2];
for(int i = 0; i < letterArray.length; i++){
letterArray[i] = new String[]{letter.charAt(i)+ "", "0"};
}
}
void setLetterCount(String sentence){
for(int i = 0; i < sentence.length(); i++){
String ch = sentence.charAt(i)+"";
for(int x = 0; x < letterArray.length; x++){
String letter = letterArray[x][0].toLowerCase();
int num = Integer.parseInt(letterArray[x][1].toString());
if (letter.equals(ch)){
letterArray[x][1] = ++num+"";
continue;
}
}
}
}
void printLetters(){
for(String arr[] : letterArray){
System.out.println(arr[0]+ " : "+ arr[1]);
}
}
}
公共类CounterApp {
public static void main(String[] args) {
Scanner sc= new Scanner(System.in);
Counter counter = new Counter();
System.out.print("Enter the sentence : ");
String sentence=sc.nextLine();
counter.setLetterCount(sentence);
counter.printLetters();
}
}
答案 8 :(得分:0)
没有2D数组
公共课LetterCounter {
public static void main(String[] args) {
Scanner sc= new Scanner(System.in);
System.out.print("Enter the sentence : ");
String sentence=sc.nextLine().toLowerCase();
int arr[] = new int[26];
for(int i = 0; i < sentence.length(); i++){
char ch = sentence.charAt(i);
int num = ((int)ch) - 97;
arr[num] = arr[num] + 1;
}
int ch = 97;
for(int i : arr){
if(i > 0) {
System.out.println(((char)ch)+ " : "+ i);
}
ch++;
}
}
}