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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

arthur

中级黑马

  • 黑马币:0

  • 帖子:16

  • 精华:0

© arthur 中级黑马   /  2013-4-4 19:41  /  2508 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 arthur 于 2013-4-4 22:40 编辑
  1. import java.io.*;
  2. public class T20006 {
  3.           public static void main(String[] args) throws IOException
  4.           {
  5.              char ch;
  6.              ch=(char)System.in.read();   
  7.               /*------------------*/
  8.               ch=(char)(ch+32);       //这里的ch+32是什么意思???
  9.               System.out.println(ch);   
  10.           }

  11. }
  12. 这是段把输入的大写字母转成小写的代码,为什么转换的时候要ch+32,望同学指点
复制代码

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1 新人加油

查看全部评分

9 个回复

倒序浏览
大小写字母的区别在于他们的ASCII码范围,他们之间的转换其实就是加减相应的ASCII码值,
你去看一下ASCII码表,例如:A的ASCII码为65,a的ASCII码为97,所以大写转换成小写要(ch+32),小写转换大写就是(ch-32)

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1 新人加油

查看全部评分

回复 使用道具 举报
a==对应的int值是97
A对应的是65
若你你懂得了...
查看ASCII码表你就知道了。
建议你用Character.toUpperCase();你就不用判断ch是否为大小写了...

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 刘印12 于 2013-4-4 20:06 编辑

例如a=97,A=65.  b=66  B=97   ,c=99  C=65.........他们之间大小写的ASCII都是相差32   也就是说每一个小写的字母与其对应的大写字母在ASCII表中的相差值为32!!

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
你查一下ASCLL表。看一下大写字母和小写字母的ASCLL码相差多少(呵呵。是32)。然后这样:ch=ch+32;
ch=(char)(ch+32);  因为ch+32为int类型,所以还要强转为char

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
是这样的字符都有他对应的码表值 比如说a对应的是97  A对应的是65,这一步ch=(char)(ch+32);执行ch+32时字符会先转换成它对应的码表值进行运算。因为俩个数运算时 其结果会是精度高的那个类型所以这一步执行的结果是int型的要得到char型的还需要强转。而这里为什么要加32, 就是得到你输入的大写字母对应的小写字母的码表值在用char转回对应的小写字母   就得到了大写字母对应的小写字母

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
  1. import java.io.*;
  2. public class Exercise1 {
  3.           public static void main(String[] args) throws IOException
  4.           {
  5.              char ch=(char)System.in.read();
  6.               System.out.println(Character.toUpperCase(ch));   
  7.           }
  8. }
复制代码

点评

有点中文注释就好了~  发表于 2013-4-4 21:42
回复 使用道具 举报
一句话:去看ACII码表中字母的码值就明白了!
回复 使用道具 举报
看看ACII码表  A代表一个数字65  小a代表97 所以在转换的时候要加32    每个相同字符  大小写都相差 32
回复 使用道具 举报
若还有问题,继续追问; 没有的话,请将帖子分类改成【已解决】哦~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马