整個代碼就是為了統計字元串中各個字元出現的個數
Map
result
=
getCharMaps(s);
這個方法調用
主要是看這個方法
public
static
Map
getCharMaps(String
s)
{
Map
map
=
new
HashMap();
//定義一個map
for(int
i
=
0;
i
<
s.length();
i++)
{
//
下面的代碼主要是循環字元串,一次取出每一個字元
Character
c
=
s.charAt(i);
//獲取對應的字元
Integer
count
=
map.get(c);
//獲取字元對應出現的次數
map.put(c,
count
==
null
?
1
:
count
+
1);
//如果之前出現過,則加1,否則直接賦1
}
return
map;
//返回最終的map
}
⑵ java為什麼讀取不到空string的字元數量
Scanner中的next()方法,空格、TAB(製表符)和回車(換行符)是它的分割符,也就是根據你輸入的內容,檢測到空格、TAB(製表符)或者回車(換行符)就終止獲取後面的內容。舉個例子,輸入"hello world",用next()方法只能獲取"hello",後面的world是無法獲取的。
我推薦使用nextLine()方法,這個方法獲取的是整行字元串,分割符只有回車(換行符)。
另外補充一點,空格、TAB(製表符)和回車(換行符)也是屬於字元,本身也是有長度的。
⑶ java定義一個字元串個數為7個
1. java中定義一個字元串數飢毀組方式如下,string類型和其他基本類型相似,創建數組有兩種方式 :
String[] str={"AAA","BBB","CCC"};
String str[]={"AAA","BBB","CCC"};
2.推薦用ArrayList
strArray = new ArrayList
(); 比較靈活。
3.也可以寫為如下格式:class[] array; array = new class[number];其中前半句為聲明,後半句為初始化,初始化必須要讓編譯器知道大小,聲明的時候java是不分配內存嘩春的,只有創建的時候也就是new的時亂肢耐候才會分配內存。
⑷ java中怎麼判斷字元串中包含字元個數
/*
*Email:97163017@qq.com
*/
publicintcountChar(Stringstr,charch){
//將字元串轉換為字元數組
char[]chs=str.toCharArray();
//定義變數count存儲字元串出現次數
intcount=0;
for(inti=0;i<chs.length;i++){
if(chs[i]==ch){
count++;
}
}
returncount;
}
如果要知道字元個數,也就是字內符串長度。直容接調用length()方法即可。
⑸ (java)如何獲取字元串的位元組數!
字元串是可以轉變成位元組數組,然後統計一下位元組數組的長度即可,參考如下代碼:
Java語言中,中文字元所佔的位元組數取決於字元的編碼方式,一般情況下,採用ISO8859-1編碼方式時,一個中文字元與一個英文字元一樣只佔1個位元組;採用GB2312或GBK編碼方式時,一個中文字元佔2個位元組;而採用UTF-8編碼方式時,一個中文字元會佔3個位元組。
public static void main(String []args) throws UnsupportedEncodingException {
運行結果:2
System.out.println("測試".getBytes("ISO8859-1").length);
運行結果:4
System.out.println("測試".getBytes("GB2312").length);
運行結果:4
System.out.println("測試".getBytes("GBK").length);
運行結果:6
System.out.println("測試".getBytes("UTF-8").length);
}
C#截取字元串位元組數 代碼如下:
public int bytelenght(string str)
{
byte[] bytestr = System.Text.Encoding.Unicode.GetBytes(str);
int j = 0;
for (int i = 0; i < bytestr.GetLength(0); i++)
{
if (i % 2 == 0)
{
j++;
}
else
{
if (bytestr[i] > 0)
{
j++;
}
}
}
return j;
}
謝謝採納
定義一個字元數組,然後根據字元長度循環得到字元
比如char ch[20];
這個20可以用字元實際長度getlength()獲取
然後再循環獲取字元
ch[i]
其實用不著那麼復雜計算的。注意:C#中string.Length只是計算字元串「字元」的個數,不計算位元組;但是漢字兩個位元組+數字(英文字元)一個位元組,才是6個,簡單的代碼如下: byte[] bytes = Encoding.Default.GetBytes("1243我"); Default(根據自己究竟是漢字還是數字等,自動合理分配內存所需要的位元組空間)
Console.WriteLine(bytes.Length);
byte[] System.Text.Encoding.Default.GetBytes(string s)
你就是一個byte一個byte讀取的吧?一個漢字兩個byte(不含surrogate情況),文件中存兩個byte,你從文件中讀取2個byte,就是這樣 查看原帖>>
strRead = String.ValueOf(strRead.toCharArray(), 0, byBuffer.length]); 2、字元串轉換成位元組數組 byte[] byBuffer = new byte[200]; byBuffer= strInput.getBytes();注意:如果字元串裡面含有中文,要特別注意,在android系統下,默認是UTF8編碼,一個中文字元相當於3個位元組,只有gb2312下一個中文相當於2位元組。
⑹ 如何用java String 查找字元個數
java String中可以使用如下方法獲得字元個數:
publicstaticvoidtest(Stringstr){
Mapmap=newHashMap();
for(inti=0;i<str.length();i++){
Stringch=str.charAt(i)+"";
Objectoch=map.get(ch);
if(och==null){
map.put(ch,newInteger(1));
}else{
map.put(ch,newInteger(((Integer)och).intValue()+1));
}
}
Iteratorit=map.keySet().iterator();
System.out.println("字元串的總數是:"+str.length());
System.out.println("/的數量是"+map.get("/"));
while(it.hasNext()){
//Stringkey=(String)it.next();
System.out.println("字母"+key+"的數量是"+map.get("/"));
}
}
⑺ java中怎樣判斷一個字元 串中字元的個數
1.使用Character.isDigit(char)判斷
char num[] = str.toCharArray();//把字元串轉換為字元數組
StringBuffer title = new StringBuffer();//使用StringBuffer類,把非數字放到title中
StringBuffer hire = new StringBuffer();//把數字放到hire中
for (int i = 0; i < num.length; i++) {
// 判斷輸入的數字是否為數字還是字元
if (Character.isDigit(num[i])) {把字元串轉換為字元,再調用Character.isDigit(char)方法判斷是否是數字,是返回True,否則False
hire.append(num[i]);// 如果輸入的是數字,把它賦給hire} else {title.append(num[i]);// 如果輸入的是字元,把它賦給title}}}
2.使用類型轉換判斷try {String str="123abc";
int num=Integer.valueOf(str);//把字元雹態升串強制轉換為閉睜數字
return true;//如果是數字,返回True
} catch (Exception e) {
return false;//如果拋出異常,返回False}
3.使用正則表達式判斷
String str = "";
boolean isNum = str.matches("[0-9]+");
//+表示1個或多個(如"3"或"225"),*表示0個或多個([0-9]*)(如""或"1"或"22"),?表示0個或1個([0-9]?)(如"源老"或"7")
ps:這個方法只能用於判斷是否是正整數
⑻ java中string類型的變數最多可以輸入多少字元
這個應該取決於你電腦內存的使用簡哪量,理論上是沒有限制的,但是實際肯定不是這樣子的。
String str="abc...";這樣定義的字元串是存在字元串池中的,
String str=new String("abc...")這樣定義的字元串是在堆內存中的,然後弊知被棧內存的對象str引用
所以字元串是對象,是在內存租咐消中存儲的,不像基本數據類型有各自的長度,字元串應該是只要是內存不滿,是沒有長度限制的
⑼ java中String類型有沒有限制,最大限制是多少
嚴格來說,String確實有長度限制。
String內部使用一個char[]數組來存放字元串的內容,數組下標是版整型(也可以參考String的構造權方法String(char value[], int offset, int count) ,可以知道字元數量是用整型表示),整型(Java規定32位)表示範圍是2G,也就是說,Java數組最大的長度是2G,即字元串不能超過2G個字元。
Java的數組大小還有沒有別的限制?事實上數組大小不能超過Java堆的大小,而Java堆的最大尺寸可以通過啟動參數指定,如果Java堆開得足夠大,數組的最大長度是可以不斷增大的。
所以,理論上,字元串不能超過2G個字元,少於2G個字元都有可能。
但編碼時有需要注意的地方,採用明文的方式,如果超過65534個位元組,可能報編譯錯誤,可參考下列網站(有一處錯誤,整型考慮到符號位,最大隻到2G)。
⑽ 編寫java程序統計字元個數。
public static void main(String[] args) {
// TODO Auto-generated method stub
int abcCount=0;//英文字母個數
int spaceCount=0;//空格鍵個數
int numCount=0;//數字個數
int otherCount=0;//其他字元個數
Scanner scan=new Scanner(System.in);
String str=scan.nextLine();
char[] ch = str.toCharArray();
for(int i=0;i<ch.length;i++){
if(Character.isLetter(ch[i])){
//判斷是否字母
abcCount++;
}
else if(Character.isDigit(ch[i])){
//判斷是否數字
numCount++;
}
else if(Character.isSpaceChar(ch[i])){
//判斷是否空格鍵
spaceCount++;
}
else{
//以上都不是則認為是其他字元
otherCount++;
}
}
System.out.println("字母個數:"+abcCount);
System.out.println("數字個數:"+numCount);
System.out.println("空格個數:"+spaceCount);
System.out.println("其他字元個數:"+otherCount);