溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java怎么計算字符個數(shù)

發(fā)布時間:2021-12-17 16:45:03 來源:億速云 閱讀:523 作者:iii 欄目:云計算

這篇文章主要講解了“Java怎么計算字符個數(shù)”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Java怎么計算字符個數(shù)”吧!

1、題目描述

寫出一個程序,接受一個有字母和數(shù)字以及空格組成的字符串,和一個字符,然后輸出輸入字符串中含有該字符的個數(shù)。不區(qū)分大小寫。

輸入描述:

輸入一個有字母和數(shù)字以及空格組成的字符串,和一個字符。

輸出描述:

輸出輸入字符串中含有該字符的個數(shù)。

輸入例子:

ABCDEF
A

輸出例子:

1

3、代碼

方案一

基本思路:定義String、Char變量--通過getline、cin輸入變量--遍歷String數(shù)組進行比較--輸出count。

//適合任何字符輸入
#include<iostream>
#include<string>
  
using namespace std;
  
int main(){
    string inputString;
    char inputChar;
    
    getline(cin,inputString);
    //getline從標(biāo)準(zhǔn)輸入設(shè)備上讀入字符,然后返回給輸入流cin,這里是將數(shù)據(jù)綁定到變量inputString上面
    cin>>inputChar;
    //scanf("%c",&inputChar);
    //以上是兩種輸入的方式:cin和scanf()
    
    int count=0;
    for(int i=0;i<inputString.length();++i){
    //for(int i=0;i<inputString.length();i++)
        if(inputString[i]==inputChar)
        count++;
    }
    cout<<count<<endl;
    return 0;
}

說明:單一字符的輸入方法:cin和scanf(),字符串的輸入方法getline()

我們也可以采用數(shù)組進行統(tǒng)計字符個數(shù):

//僅適用于字母輸入,了解即可不推薦
#include "stdafx.h"
#include <stdio.h>     
#include <math.h>  
#include <iostream>
#include <String>
using namespace std;
int main()
{
	int charNum[26];
	for(int i =0; i<26; i++)
	{
		charNum[i] = 0;
	}
	string str;
	cout<<"please input a string : "<<endl;
	getline(cin,str);
	int strLen = str.length();
	for(int i=0; i < strLen; i++)
	{
		char s = str.at(i);
		if(s >= 'A' && s <= 'Z')
		{
			int n = s - 'A';
			charNum[n]++;
		}
		else if( s >= 'a' && s <= 'z')
		{
			int n = s - 'a';
			charNum[n]++;
		}
	}
	for(int i = 0; i< 26; i++)
	{
		char char_A = 'A' + i;
		cout<<" the num of the char :"<<char_A<<" = "<<charNum[i]<<endl;
	}
	system("pause");
	return 0;
}

方案二

基本思路:借助map容器存儲--尋找相等的key--value加1--輸出value

//依據(jù)下面操作進行改進即可:
#include <iostream>
#include <map>
#include <stdio.h>

using namespace std;

int main(){
    map<char,int>inputString;
    //這里的輸入String作為單一的char類型進行存儲
    char inputChar;
    while ((inputChar=getchar())) {
    //getchar函數(shù)的功能是從鍵盤上輸入一個字符,這里是將輸入的字符綁定到變量inputChar上
        if(inputChar=='\n')
        //如果是換行,則持續(xù)檢查輸入字符,因為換行是不作為一個字符處理的
            break;
            //一開始輸入的時候沒有換行,先執(zhí)行else的語句,即把map初始化,然后換行輸入待比較的字符,即執(zhí)行break跳出這個while
        else
            inputString[inputChar]++;
            //如果對應(yīng)的key,即char字符相等,則value加1
            //這里其實就是對map進行初始化
    }
    //以上是通過inputChar對inputString Map賦值
    cin>>inputChar;
    //這里輸入的是字符,而不是字符串
    cout<<inputString[inputChar]<<endl;
    //這里不能區(qū)分大小寫字母,即a與A作為兩個字符處理,需要改進
    return 0;
}

以上程序未區(qū)分大小寫,作如下改進:

//適合任意類型的字符串
#include <iostream> 
#include <map> 
#include <stdio.h>
//必須引入這個頭文件,否則getchar()會報錯

using namespace std; 

int main() { 
    map<char,int>words; 
    char ch; 
    while ((ch=getchar())) 
    { 
        if(ch=='\n') 
        	break; 
     	else 
            words[ch]++; 
    } 
    cin>>ch;
    if((ch>='a')&&(ch<='z')) { 
        cout<<words[ch]+words[ch-32]<<endl; 
        //如果是小寫字母,則減去32求得大寫字母的數(shù)目,輸出二者之和,大小寫字母ASCII碼相差32,且小寫字母數(shù)值大
    } 
    else if ((ch>='A')&&(ch<='Z')) { 
        cout<<words[ch]+words[ch+32]<<endl; 
    } 
    //這里把大小寫字符當(dāng)做一個來處理
    else 
        cout<<words[ch]<<endl; 
        //如果不是字母輸入,同樣可以輸出,這樣使得該程序可以適應(yīng)各種數(shù)據(jù)類型的字符串
    return 0; 
}

感謝各位的閱讀,以上就是“Java怎么計算字符個數(shù)”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Java怎么計算字符個數(shù)這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI