字符和ASICC的关系

孙一峰2 2016-04-17 03:02:05
一个小程序,输出字符串str中每个小写字母的数量,按字母顺序排列。
我是从小写字母a开始删除字符,然后用.length()计算数量,a++,重复操作,代码如下。
结果发现大写字母和数字也能被计算,可是他们不是排在a前面吗,a++为什么会取到大写字母和数字的值。

public class Test1 {

public static void main(String[] args) {
String str="acklabe22fdADADVjkln";
char chr ='a';
String result="";
while (str.length()>0) {
int l1=str.length();
String oldstr=new String().valueOf(chr);
str=str.replace(oldstr, "");
int count=l1-str.length();
if(count>0){
result+=count+oldstr+" ";
}
chr+=1;
}
System.out.println(result);
}
}
...全文
225 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
x060508 2016-04-20
  • 打赏
  • 举报
回复
你这代码太乱了 没看懂
自由8888 2016-04-20
  • 打赏
  • 举报
回复
public class Test1 { public static void main(String[] args) { String str="acklabe22fdADADVjkln"; char chr ='a'; String result=""; while (str.length()>0) { //注意你的结束条件,当所有小写字母都遍历过后,字符串Str的值为“22ADADV”,length>0,所以还会继续执行下去 int l1=str.length(); String oldstr=new String().valueOf(chr); str=str.replace(oldstr, ""); int count=l1-str.length(); if(count>0){ result+=count+oldstr+" "; } chr+=1; } System.out.println(result); } }
孙一峰2 2016-04-19
  • 打赏
  • 举报
回复
引用 2 楼 x060508 的回复:

package com.youyu.day0417;

public class Test {

	public static void main(String[] args) {
		
		lowcaseCount("sdDSSLKAFJddjsklfAFDK5445");
	}
	
	//小写字母 a-x 对应int范围 97-120
	public static int lowcaseCount(String str){
		
		//计数器
		int count=0;
		
		for (int i = 0; i < str.length(); i++) {
			
			//获取单字符
			char c=str.charAt(i);
			
			
			if(97<=(int)c &&(int)c<=120){
				
				count++;
				System.out.println(c);
			}
			
		}
		System.out.println(count);
		return count;
	}
	
}

我知道这样可以取到小写字母,但是我很好奇为什么‘a’++会取到大写字母和数字呢?它们不是排在a的ASICC前面吗?
  • 打赏
  • 举报
回复
因为你的循环经过了65526次
x060508 2016-04-17
  • 打赏
  • 举报
回复

package com.youyu.day0417;

public class Test {

	public static void main(String[] args) {
		
		lowcaseCount("sdDSSLKAFJddjsklfAFDK5445");
	}
	
	//小写字母 a-x 对应int范围 97-120
	public static int lowcaseCount(String str){
		
		//计数器
		int count=0;
		
		for (int i = 0; i < str.length(); i++) {
			
			//获取单字符
			char c=str.charAt(i);
			
			
			if(97<=(int)c &&(int)c<=120){
				
				count++;
				System.out.println(c);
			}
			
		}
		System.out.println(count);
		return count;
	}
	
}

x060508 2016-04-17
  • 打赏
  • 举报
回复
没看懂感觉逻辑好乱

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧