黑马程序员技术交流社区

标题: 关于String转换大小写的问题 [打印本页]

作者: double_x    时间: 2016-8-18 21:04
标题: 关于String转换大小写的问题
/*
*         1.使用for循环将字符串从最后一个字符开始遍历
*         2.遍历的当前字符如果是大写字符,就使用toLowerCase()方法将其转换为小写字符,反之则使用
*                 toUpperCase()方法将其转换为大写字符
*         3.定义StringBuffer对象,调用append方法一次添加遍历的字符,最后调用StringBuffer
*                 对象的toString方法,将结果输出。

* */
                // TODO Auto-generated method stub
                String s = "HelloWorld";
                char[] ch = s.toCharArray();
                StringBuffer sb = new StringBuffer();
                for (int i = ch.length - 1; i >= 0; i--) {
                        if (ch >= 'A' && ch <= 'Z') {
                                String temp1 = ch + "";
                                sb.append(temp1.toLowerCase(););
                        } else if (ch >= 'a' && ch <= 'z') {
                                String temp = ch + "";
                                sb.append(temp.toUpperCase(););
                        }
                }
                System.out.println(sb);
               
这个最后输出的为什么没有变换大小写
       


作者: double_x    时间: 2016-8-18 21:12
这段伪代码 哪里错了吗
作者: talons    时间: 2016-8-18 21:21
本帖最后由 talons 于 2016-8-18 21:23 编辑

你的思路没问题。代码也没什么问题。你这是用记事本写的程序?用eclipse应该直接编译都过不了的。
唯一的问题就是你的整个if代码块里面的所有ch之后少了值。ch在这里只是代表指向char数组的指针。
不能对应具体值。
[Java] 纯文本查看 复制代码
if (ch >= 'A' && ch <= 'Z') {
                        String temp1 = ch + "";
                        sb.append(temp1.toLowerCase());
                } else if (ch >= 'a' && ch <= 'z') {
                        String temp = ch + "";
                        sb.append(temp.toUpperCase());
                }


作者: double_x    时间: 2016-8-18 21:23
talons 发表于 2016-8-18 21:21
你的思路没问题。代码也没什么问题。你这是用记事本写的程序?用eclipse应该直接编译都过不了的。
唯一的问 ...

我擦  我的数组格式被吃了  我重新发一下

作者: double_x    时间: 2016-8-18 21:26
[Java] 纯文本查看 复制代码

                // TODO Auto-generated method stub
                String s = "HelloWorld";
                char[] ch = s.toCharArray();
                StringBuffer sb = new StringBuffer();
                for (int i = ch.length - 1; i >= 0; i--) {
                        if (ch >= 'A' && ch <= 'Z') {
                                String temp1 = ch + "";
                                //字符串一旦定义不可改变,必须重新接受转换之后的字符
                                String str1 = temp1.toLowerCase();
                                sb.append(str1);
                        } else if (ch >= 'a' && ch <= 'z') {
                                String temp = ch + "";
                                String str1 = temp.toUpperCase();
                                //System.out.print(str1);
                                sb.append(str1);
                        }
                }
                System.out.println(sb);
               
                /*System.out.println();
                System.out.println("-----------");
                String str = "abcdefg";
                System.out.println(str.toUpperCase());*/
       


已经明白了  原来string一旦定义  不可改变
作者: talons    时间: 2016-8-18 21:34
double_x 发表于 2016-8-18 21:26
[Java] 纯文本查看 复制代码

                // TODO Auto-generated method stub
                String s = "HelloWorld";

不会啊,其实如果不是数组的问题你的源码直接放eclipse也可以直接跑起来啊,应该不存在说String不能改变的问题。我觉得这里如果说只是用一次就没必要定义一个temp变量。用Character类里面的toLowerCase和toUpperCase方法,直接把char数据放进去装换大小写就行了。
[mw_shl_code=java,true]package demos;
public class Demo4 {
        public static void main(String[] args) {
                String s = "HelloWorld";
        char[] ch = s.toCharArray();
        System.out.println(ch);
        StringBuffer sb = new StringBuffer();
        for (int i = ch.length - 1; i >= 0; i--) {
                if (ch >= 'A' && ch <= 'Z') {                       
                       sb.append(Character.toLowerCase(ch));
                } else if (ch >= 'a' && ch <= 'z') {
                      sb.append(Character.toUpperCase(ch));
                }
        }
        System.out.println(sb);
       /*  
                输出结果:
            HelloWorld
            DLROwOLLEh
        */                  
        }
}

作者: double_x    时间: 2016-8-18 22:17
talons 发表于 2016-8-18 21:34
不会啊,其实如果不是数组的问题你的源码直接放eclipse也可以直接跑起来啊,应该不存在说String不能改变 ...

不是吧  你的char类型的没有toLowerCase方法吧  你装箱之后难道就有了??????
作者: talons    时间: 2016-8-19 21:53
double_x 发表于 2016-8-18 22:17
不是吧  你的char类型的没有toLowerCase方法吧  你装箱之后难道就有了?????? ...

Character这里是当工具类在用啊
作者: FunnyKing    时间: 2016-8-19 22:22
public static void main(String[] args) {
                StringBuffer sb = new StringBuffer();
                String s = "HelloWorld";
                char[] ch = s.toCharArray();
                for (int i = ch.length - 1; i >= 0; i--) {
                        if (ch[i] >= 'A' && ch[i] <= 'Z') {
                String temp1 = ch[i] + "";
                sb.append(temp1.toLowerCase());
        } else if (ch[i] >= 'a' && ch[i] <= 'z') {
                String temp = ch[i] + "";
                sb.append(temp.toUpperCase());
        }
                }
                 System.out.println(sb);
        }

作者: 雪连城    时间: 2016-8-19 22:38
作为java新人的我默默路过
作者: double_x    时间: 2016-8-19 22:45
雪连城 发表于 2016-8-19 22:38
作为java新人的我默默路过

慢慢来  不能一步登天
作者: double_x    时间: 2016-8-19 23:55
talons 发表于 2016-8-19 21:53
Character这里是当工具类在用啊

就算是工具类也没有转换大小写的方法吧?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2