A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

基础测试的时候有这么一道题:编写程序,从键盘接收一个字符串,对字符串中的字母进行大小写互转(大写字母转成小写,小写字母转成大写)。这道题的常规做法我做出来了,代码实现如下:

  1. /* 分析:1.首先 创建键盘录入对象
  2. * 2.定义一个变量接收键盘录入的字符串  ,例如: "AjweAJaj"
  3. * 3.要想对字符串字母进行大小写互转,首先得遍历字符串,获取到每个字符,并存放到一个数组中
  4. * 4.要想实现判断字母大小写问题,就要考虑到后续的字符串是个新的字符串,因此可以创建一个字符串缓冲区,用来实现字符串的拼接
  5. * 5.遍历数组并进行大小写判断
  6. * 6.将得到的新字符添加到字符串缓冲区,完成新字符串的拼接
  7. * */
  8. public class Test5 {
  9.         public static void main(String[] args) {
  10.                 // 键盘录入一个字符串
  11.                 Scanner sc = new Scanner(System.in);
  12.                 // 请输入数据
  13.                 System.out.println("请您输入数据:");
  14.                 String line = sc.nextLine();
  15.                 // 把字符串转换成字符数组
  16.                 char[] chs = line.toCharArray();

  17.                 // 创建字符串缓冲区,用于存储新的字符串
  18.                 StringBuilder sb = new StringBuilder();

  19.                 // 遍历数组,获取每一个元素
  20.                 for (int i = 0; i < chs.length; i++) {
  21.                         // 判断,由于大写字母A--Z在转换成小写a--z只需要在原来基础上+32,即可完成转换因此可以通过chs[i] += 32来实现
  22.                         if (chs[i] >= 'A' && chs[i] <= 'Z') {
  23.                                 chs[i] += 32;
  24.                                 sb.append(chs[i]);
  25. //                                同理,实现小写到大写的转换:
  26.                         } else if (chs[i] >= 'a' && chs[i] <= 'z') {
  27.                                 chs[i] -= 32;
  28.                                 sb.append(chs[i]);
  29. //                                如果字符串中有其他字符,则不需要进行转换,直接添加到新数组中即可
  30.                         } else {
  31.                                 sb.append(chs[i]);
  32.                         }
  33.                 }
  34. //                        输出新的字符串
  35.                 System.out.println(sb);

  36.         }

  37. }
复制代码

    后来我想到一个问题:如果直接把字符串作为元素存储到集合中,然后利用集合的方法实现该需求的话应该怎么做?私下做了几次代码实现都不满意,因此想请教下大家该题的集合实现.谢谢!

2 个回复

倒序浏览
膜拜大神把!!!
回复 使用道具 举报
占个位置学习一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马