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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

请大家看一下,我的这个程序为什么不行呢??运行后转换不出来啊?
  1. public class Test7
  2. {
  3.         public static void main(String[] args) throws IOException
  4.         {
  5.                 //键盘读取流:
  6.                 BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
  7.                 String str=br.readLine();
  8.                
  9.                 convert(str);
  10.                 br.close();
  11.         }
  12.        
  13.         public static String convert(String str)
  14.         {
  15.                 //使用缓冲区技术
  16.                 StringBuilder sb=new StringBuilder();               
  17.                
  18.                 //使用循环方法来判断大小写
  19.                 for(int x=0;x<str.length();x++)
  20.                 {
  21.                         //判断第x个位置上的字符是否为大写
  22.                          if(str.charAt(x)>='A' && str.charAt(x)<='Z')       
  23.                                 //转化为小写追加到sb末尾
  24.                 sb.append(str.charAt(x)+32);  
  25.                                 //判断第x个位置上的字符是否为小写
  26.             else if(str.charAt(x)>='a' && str.charAt(x)<='z')
  27.                     //转化为大写追加到sb末尾
  28.                     sb.append(str.charAt(x)-32);
  29.                 }
  30.                
  31.                 return sb.toString();//将缓冲区转换为字符串输出
  32.         }
  33. }
复制代码


评分

参与人数 1技术分 +2 收起 理由
lwj123 + 2

查看全部评分

16 个回复

倒序浏览
str.charAt(x)是char类型的,char类型的和int类型的做运算,返回值也是int类型的好吧,所以结果是全数字的字符串
回复 使用道具 举报
你在做大小写转换的时候,类型被强制提升为int型!
回复 使用道具 举报
橘子你个哈密瓜 发表于 2015-2-11 15:43
str.charAt(x)是char类型的,char类型的和int类型的做运算,返回值也是int类型的好吧,所以结果是全数字的 ...

那应该怎么做?
回复 使用道具 举报
  1. // 使用循环方法来判断大小写
  2.                 for (int x = 0; x < str.length(); x++) {
  3.                         // 判断第x个位置上的字符是否为大写
  4.                         if (str.charAt(x) >= 'A' && str.charAt(x) <= 'Z') {
  5.                                 int i = (int) str.charAt(x);
  6.                                 // 转化为小写追加到sb末尾
  7.                                 sb.append(new Character((char) (i + 32)));
  8.                         }
  9.                         // 判断第x个位置上的字符是否为小写
  10.                         else if (str.charAt(x) >= 'a' && str.charAt(x) <= 'z') {
  11.                                 // 转化为大写追加到sb末尾
  12.                                 int i = (int) str.charAt(x);
  13.                                 sb.append(new Character((char) (i - 32)));
  14.                         } else {
  15.                                 sb.append(str.charAt(x));
  16.                         }
  17.                 }
复制代码
回复 使用道具 举报
㏒假™面具 发表于 2015-2-11 17:15
你在做大小写转换的时候,类型被强制提升为int型!

那如何修改啊?
回复 使用道具 举报
toUpperCase()小写转大写toLowerCase()大写转小写
回复 使用道具 举报
rehan 中级黑马 2015-2-11 20:58:47
8#
hhqnmlgb 发表于 2015-2-11 19:58
toUpperCase()小写转大写toLowerCase()大写转小写

这个不能直接使用吧?要在Integer或其他类型中使用?
回复 使用道具 举报
rehan 中级黑马 2015-2-11 21:17:02
9#

为什么我使用eclipse不能显示出结果啊?按下enter键没有反应啊?只显示原來的输入,在控制台上看不到转换后的结果。。。
回复 使用道具 举报
rehan 发表于 2015-2-11 20:58
这个不能直接使用吧?要在Integer或其他类型中使用?

是String中的方法
回复 使用道具 举报
看不大懂
回复 使用道具 举报
huangchunwei 来自手机 中级黑马 2015-2-12 01:39:59
12#
我用的不是StringBuilder  用的是接受到的字符串变成字符数组,然后在进行操作的。
public class Test8 {
        public static void main(String[] args){
                try{
                BufferedReader bufr= new BufferedReader(new InputStreamReader(System.in));//键盘录入。
                String line = null;
                while((line=bufr.readLine())!=null){//一直读取键盘录入。
                        Strin
回复 使用道具 举报
进来学习学习
回复 使用道具 举报
rehan 发表于 2015-2-11 21:17
为什么我使用eclipse不能显示出结果啊?按下enter键没有反应啊?只显示原來的输入,在控制台上看不到转换 ...

没有输出语句如何显示呢?
回复 使用道具 举报
rehan 发表于 2015-2-11 21:17
为什么我使用eclipse不能显示出结果啊?按下enter键没有反应啊?只显示原來的输入,在控制台上看不到转换 ...

你都没写没有输出语句。。。
回复 使用道具 举报
rehan 中级黑马 2015-2-12 14:51:29
16#
橘子你个哈密瓜 发表于 2015-2-12 11:31
你都没写没有输出语句。。。

其实我后来也发现了。。。额的天哪。。。真是粗心啊,做题做晕了
回复 使用道具 举报
rehan 中级黑马 2015-2-12 14:52:37
17#

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