可以使用两个变量分别记录小写字母的个数和大写字母的个数,然后遍历整个字符数组,使用Java中的Character类的isLowerCase()和toUpperCase()方法来判断和转换小写字母。如下代码所示:
在定陶等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都做网站、成都网站设计 网站设计制作专业公司,公司网站建设,企业网站建设,成都品牌网站建设,网络营销推广,外贸营销网站建设,定陶网站建设费用合理。
char[] array = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
int lowerCount = 0;
int upperCount = 0;
for (int i = 0; i array.length; i++) {
if (Character.isLowerCase(array[i])) {
lowerCount++;
array[i] = Character.toUpperCase(array[i]);
} else {
upperCount++;
}
}
System.out.println("小写字母个数:" + lowerCount);
System.out.println("大写字母个数:" + upperCount);
System.out.println("转换后的字符数组:" + Arrays.toString(array));
要求1中要去掉所有数字,要求2、3中又要保留数字并进行翻译,所以我两种都写了。具体代码为:
public class Test {
public static void main(String args[]) {
String str = "0as2sw$#3Six";
System.out.println("原字符串:[" + str + "]");
System.out.println("");
//不翻译数字
SetString set1 = new LinkedHashSet();
for (String s : str.split("[^A-Z a-z]")) {
if (s.length() 0) {
set1.add(s);
}
}
System.out.println("不翻译数字的结果:" + set1);
System.out.println("");
/*因为又要去除非字母和数字(以下简称去杂),又要将去杂结果分离成数字和字母,再翻译数字,整个流程挺麻烦的,索性在去杂之前,先将数字翻译成英文,为了使数字翻译后的英文和原字符串的字母分开,在数字左右添加占位符#,这样的话,形如:[a1b2c3]就会被处理为:[a#one#b#two#c#three#],这样去杂后,就会被分割为:[a,one,b,two,c,three]了。这里定义了枚举值English,用于实现0-9的英文映射,[10]不好映射成[ten],现在只能映射为[one,zero],如果按照题干非要映射为ten的话你再考虑考虑吧*/
for (English english : English.values()) {
str = str.replaceAll(english.getNum() + "", "#" + english.name() + "#");
}
System.out.println("将数字替换为“占位符 + 英文 + 占位符”的中间结果:[" + str + "]");
System.out.println("");
//翻译数字的结果
SetString set2 = new LinkedHashSet();
for (String s : str.split("[^A-Za-z]")) {
if (s.length() 0 ) {
//判断当前字符串是否是数字的英文,如果不是,就把它拆成单字母
if (mappingEnglish(s)){
set2.add(s);
}else {
for (char c : s.toCharArray()) {
set2.add(String.valueOf(c));
}
}
}
}
System.out.println("翻译数字的结果:" + set2);
}
//判断当前字符串是否是数字的英文
private static boolean mappingEnglish(String str) {
for (English english : English.values()) {
str = str.toLowerCase();
if (english.name().equals(str)) {
return true;
}
}
return false;
}
enum English {
zero(0),
one(1),
two(2),
three(3),
four(4),
five(5),
six(6),
seven(7),
eight(8),
nine(9);
private int num;
public int getNum() {
return num;
}
English(int num) {
this.num = num;
}
}
}
我怕发出来代码又挤在一起,顺便也截个图:
8-21行
22-50行
51-61行
62-85行完
运行结果:
编码思路
首先考虑到,英文字母的ASCII码是按字母顺序连续的整数,所以可以采用起始字母A递增的方式进行打印
英文字母有大小写之分,大小写字母的ASCII码是不连续的,所以需要分别打印
示例代码
public static void main(String[] args) {
char uc = 'A';
char lc = 'a';
//保存全部大写字母
StringBuilder upperCaseLetters = new StringBuilder("UpperCaseLetters:");
//保存全部小写字母
StringBuilder lowerCaseLetters = new StringBuilder("LowerCaseLetters:");
for (int i = 0; i 26; i++) {
upperCaseLetters.append((char) (uc + i));
lowerCaseLetters.append((char) (lc + i));
}
System.out.println(upperCaseLetters);
System.out.println(lowerCaseLetters);
}
注意事项
不建议将上述变量uc硬编码赋值为65。反之,则可以提高程序的可读性,省去了不必要的注释,也体现出了可移植性的思想。
源代码
输出结果
public class Demo1 {
public static void main(String[] args) {
int start= Character.valueOf('A'); //获取'A'对应的ASCII码编号
int j=0; //对每行打印的个数进行计数
for(int i=start;i=Character.valueOf('Z');i++){ //从'A'循环到'Z'
System.out.print((char)i); //输出当前ASCII码对应的字母
j++; //打印出一个字母后加1
if (j==10) { //如果打印了十个数了
j=0; //把j重新设置为0;
System.out.println(); //换行
}
}
}
}