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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李道福 中级黑马   /  2013-4-20 12:33  /  1265 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李道福 于 2013-4-20 17:00 编辑
  1. public class TestChar{
  2.         /*
  3.                 需求:将字符串中的大写字符变成小写,小写字符变成大写
  4.                 思路:1.将字符串变成字符数组
  5.                           2.遍历字符数组,判断每个字符是否是字母
  6.                           3.如果是字母,则进一步判断是大写字母还是小写字母,是大写则变成小写,是小写则变成大写
  7.         */
  8.         public static void main(String[] args){
  9.                 String str="FOAGD23fdaf45Ddad34D DW23GI";
  10.                 String str2=null;
  11.                 System.out.println("改变前字符串:"+str);
  12.                 char[] ch=str.toCharArray();
  13.                 for(int i=0;i<ch.length;i++){
  14.                         if(Character.isLetter(ch[i])){
  15.                                 if(Character.isLowerCase(ch[i]))
  16.                                         Character.toUpperCase(ch[i]);
  17.                                 else
  18.                                         Character.toLowerCase(ch[i]);
  19.                         }
  20.                 }
  21.                 str=ch.toString();
  22.                 System.out.println("改变后字符串:"+str);
  23.         }
  24. }
复制代码
为什么运行结果不正确,?好像程序也没什么问题啊

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

3 个回复

倒序浏览
本帖最后由 先小涛 于 2013-4-20 12:50 编辑
  1. public class TestChar{
  2.         /*
  3.                 需求:将字符串中的大写字符变成小写,小写字符变成大写
  4.                 思路:1.将字符串变成字符数组
  5.                           2.遍历字符数组,判断每个字符是否是字母
  6.                           3.如果是字母,则进一步判断是大写字母还是小写字母,是大写则变成小写,是小写则变成大写
  7.         */
  8.         public static void main(String[] args){
  9.                 String str="FOAGD23fdaf45Ddad34D DW23GI";
  10.                 String str2=null;
  11.                 System.out.println("改变前字符串:"+str);
  12.                 char[] ch=str.toCharArray();
  13.                 for(int i=0;i<ch.length;i++){
  14.                         if(Character.isLetter(ch[i])){
  15.                                 if(Character.isLowerCase(ch[i]))
  16.                                        ch[i] = Character.toUpperCase(ch[i]); //变大写之后要存储起来
  17.                                 else
  18.                                            ch[i] = Character.toLowerCase(ch[i]); //变小写之后要存储起来

  19.                         }
  20.                 }
  21.                 str2=ch.toString();
  22.                 System.out.print("改变后字符串:");
  23.                 for(char c:ch){
  24.                         System.out.print((char)c);
  25.                 }
  26.         }
  27. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
先小涛 发表于 2013-4-20 12:48

不同之处,在于注释的地方。你改变大小后,要存到数组中。
回复 使用道具 举报
本帖最后由 晓风妮子 于 2013-4-20 13:10 编辑

public class TestChar{

        /*

                需求:将字符串中的大写字符变成小写,小写字符变成大写

                思路:1.将字符串变成字符数组

                          2.遍历字符数组,判断每个字符是否是字母

                          3.如果是字母,则进一步判断是大写字母还是小写字母,是大写则变成小写,是小写则变成大写

        */

        public static void main(String[] args){

                String str="FOAGD23fdaf45Ddad34D DW23GI";

                String str2=null;

                System.out.println("改变前字符串:"+str);

                char[] ch=str.toCharArray();

                for(int i=0;i<ch.length;i++){
                 

                        if(Character.isLetter(ch)){

                                if(Character.isLowerCase(ch))                                 
   
                                else

                                        ch=Character.toLowerCase(ch);
                                
                        }
                        
                }

str=new String(ch); //这里可以调用String的构造方法
               

                System.out.println("改变后字符串:"+str);

        }

}
你代码中的错误是因为char[]是字符数组类型,他的toString方法没有重写,仍然用的是Object中的,所以打印的是地址值。如果你非要用toString方法,可以参考一下代码。
public class TestChar{

/*

                需求:将字符串中的大写字符变成小写,小写字符变成大写

                思路:1.将字符串变成字符数组

                          2.遍历字符数组,判断每个字符是否是字母

                          3.如果是字母,则进一步判断是大写字母还是小写字母,是大写则变成小写,是小写则变成大写

        */

        public static void main(String[] args){

                String str="FOAGD23fdaf45Ddad34D DW23GI";

                String str2="";

                System.out.println("改变前字符串:"+str);

                char[] ch=str.toCharArray();

                for(int i=0;i<ch.length;i++){
                 

                        if(Character.isLetter(ch)){

                                if(Character.isLowerCase(ch))
                                  ch=Character.toUpperCase(ch);
                                 
                                

                                       

                                else

                                        ch=Character.toLowerCase(ch);
                                str2=str2+Character.toString(ch);

                        }
                        else{
                         str2=str2+Character.toString(ch);
                        }

                }

               
               

                System.out.println("改变后字符串:"+str2);

        }

}

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马