基础测试的时候有这么一道题:编写程序,从键盘接收一个字符串,对字符串中的字母进行大小写互转(大写字母转成小写,小写字母转成大写)。这道题的常规做法我做出来了,代码实现如下:
- /* 分析:1.首先 创建键盘录入对象
- * 2.定义一个变量接收键盘录入的字符串 ,例如: "AjweAJaj"
- * 3.要想对字符串字母进行大小写互转,首先得遍历字符串,获取到每个字符,并存放到一个数组中
- * 4.要想实现判断字母大小写问题,就要考虑到后续的字符串是个新的字符串,因此可以创建一个字符串缓冲区,用来实现字符串的拼接
- * 5.遍历数组并进行大小写判断
- * 6.将得到的新字符添加到字符串缓冲区,完成新字符串的拼接
- * */
- public class Test5 {
- public static void main(String[] args) {
- // 键盘录入一个字符串
- Scanner sc = new Scanner(System.in);
- // 请输入数据
- System.out.println("请您输入数据:");
- String line = sc.nextLine();
- // 把字符串转换成字符数组
- char[] chs = line.toCharArray();
- // 创建字符串缓冲区,用于存储新的字符串
- StringBuilder sb = new StringBuilder();
- // 遍历数组,获取每一个元素
- for (int i = 0; i < chs.length; i++) {
- // 判断,由于大写字母A--Z在转换成小写a--z只需要在原来基础上+32,即可完成转换因此可以通过chs[i] += 32来实现
- if (chs[i] >= 'A' && chs[i] <= 'Z') {
- chs[i] += 32;
- sb.append(chs[i]);
- // 同理,实现小写到大写的转换:
- } else if (chs[i] >= 'a' && chs[i] <= 'z') {
- chs[i] -= 32;
- sb.append(chs[i]);
- // 如果字符串中有其他字符,则不需要进行转换,直接添加到新数组中即可
- } else {
- sb.append(chs[i]);
- }
- }
- // 输出新的字符串
- System.out.println(sb);
- }
- }
复制代码
后来我想到一个问题:如果直接把字符串作为元素存储到集合中,然后利用集合的方法实现该需求的话应该怎么做?私下做了几次代码实现都不满意,因此想请教下大家该题的集合实现.谢谢! |
|