Java 字符串统计分析代码优化建议
//1\u0026#x20;打印有多少个大写字母\u0026#x20;、小写字母\u0026#x20;、数字【简单】 String str = "AJFDOI987EQJF9Q7498OFJALKJF9Vmvaou809890q9jldaouq1100inbknvll".trim(); int tempA = 0,tempa = 0,temp0 = 0; for(int i = 0;i<str.length();i++){ int ascii = str.charAt(i); if(ascii <= 90 && ascii >= 65){ tempA++; } if(ascii <= 122 && ascii >= 97){ tempa++; } if(ascii <= '9' && ascii >= '0'){ temp0++; } } System.out.println("大写字母:"+tempA+" 小写字母:"+tempa+" 数字:"+temp0);
//2\u0026#x20;、打印有多少个不同的字符【简单】
int different = 0;
for(int i = 0;i < str.length();i++){
boolean flag = true;
char strChar = str.charAt(i);
for(int j = 0;j < str.length();j++){
if(j == i){
continue;
}
if(strChar == str.charAt(j)){
flag = false;
break;
}
}
if (flag){
different++;
}
}
System.out.println("共有 "+different+" 个不同的字符");
int numA = 0;
//3\u0026#x20;、打印有多少个A【简单】
for(int i = 0;i < str.length();i++){
char strChar1 = str.charAt(i);
if(strChar1 == 'A'){
numA++;
}
}
System.out.println("共有 "+numA+" 个 A");
//4\u0026#x20;、打印每个字符的个数【较难】
List<Character> list = new ArrayList();
for(int i = 0;i<str.length();i++){
boolean flag = true;
if(i > 0){
for(int j = 0;j<i;j++){
if(str.charAt(i) == str.charAt(j)){
flag = false;
break;
}
}
}
if(flag){
list.add(str.charAt(i));
}
}
int[] everyNumCounts = new int[list.size()];
for(int i = 0;i < str.length();i++){
for(int j = 0;j < list.size();j++){
if(str.charAt(i)== list.get(j)){
everyNumCounts[j]++;
}
}
}
for (int i = 0;i < list.size();i++){
System.out.print(list.get(i)+":");
System.out.print(everyNumCounts[i]+" ");
}
}
代码没有语法错误,但是存在逻辑问题。
1、打印有多少个大写字母、小写字母、数字:代码逻辑正确。
2、打印有多少个不同的字符:代码逻辑正确,但是可以使用Set集合来实现更简洁的代码。
3、打印有多少个A:代码逻辑正确。
4、打印每个字符的个数:代码逻辑正确,但是可以使用HashMap来实现更简洁的代码。另外,列表list可以直接使用HashSet来存储不重复的字符。
原文地址: https://www.cveoy.top/t/topic/qb9K 著作权归作者所有。请勿转载和采集!