整个代码就是为了统计字符串中各个字符出现的个数
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);