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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© double_x 中级黑马   /  2016-8-18 21:04  /  2025 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
*         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);
               
这个最后输出的为什么没有变换大小写
       

11 个回复

倒序浏览
这段伪代码 哪里错了吗
回复 使用道具 举报
本帖最后由 talons 于 2016-8-18 21:23 编辑

你的思路没问题。代码也没什么问题。你这是用记事本写的程序?用eclipse应该直接编译都过不了的。
唯一的问题就是你的整个if代码块里面的所有ch之后少了值。ch在这里只是代表指向char数组的指针。
不能对应具体值。
[Java] 纯文本查看 复制代码
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());
                }

回复 使用道具 举报
talons 发表于 2016-8-18 21:21
你的思路没问题。代码也没什么问题。你这是用记事本写的程序?用eclipse应该直接编译都过不了的。
唯一的问 ...

我擦  我的数组格式被吃了  我重新发一下
回复 使用道具 举报
[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[i] >= 'A' && ch[i] <= 'Z') {
				String temp1 = ch[i] + "";
				//字符串一旦定义不可改变,必须重新接受转换之后的字符
				String str1 = temp1.toLowerCase();
				sb.append(str1);
			} else if (ch[i] >= 'a' && ch[i] <= 'z') {
				String temp = ch[i] + ""; 
				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一旦定义  不可改变
回复 使用道具 举报
double_x 发表于 2016-8-18 21:26
[Java] 纯文本查看 复制代码
		// TODO Auto-generated method stub
		String s = "HelloWorld";
[/quote]

不会啊,其实如果不是数组的问题你的源码直接放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[i] >= 'A' && ch[i] <= 'Z') {                       
                       sb.append(Character.toLowerCase(ch[i]));
                } else if (ch[i] >= 'a' && ch[i] <= 'z') {
                      sb.append(Character.toUpperCase(ch[i]));
                }
        }
        System.out.println(sb);
       /*  
        	输出结果:
            HelloWorld
            DLROwOLLEh
        */                  
	}
}
回复 使用道具 举报
talons 发表于 2016-8-18 21:34
不会啊,其实如果不是数组的问题你的源码直接放eclipse也可以直接跑起来啊,应该不存在说String不能改变 ...

不是吧  你的char类型的没有toLowerCase方法吧  你装箱之后难道就有了??????
回复 使用道具 举报
talons 初级黑马 2016-8-19 21:53:42
8#
double_x 发表于 2016-8-18 22:17
不是吧  你的char类型的没有toLowerCase方法吧  你装箱之后难道就有了?????? ...

Character这里是当工具类在用啊
回复 使用道具 举报
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);
        }
回复 使用道具 举报
作为java新人的我默默路过
回复 使用道具 举报
雪连城 发表于 2016-8-19 22:38
作为java新人的我默默路过

慢慢来  不能一步登天
回复 使用道具 举报
talons 发表于 2016-8-19 21:53
Character这里是当工具类在用啊

就算是工具类也没有转换大小写的方法吧?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马