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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 一直很安静 中级黑马   /  2013-11-22 20:08  /  1794 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

从键盘上读取一行数据可以通过字符转换流转成字符流 通过readline 方法可以读到这行数据 但是读到的是字符串 字符串只有把一行数据全变成大写或小写的功能 但是不能把其中大写变小写 小写变大写 谁可以提供个思路 单个字符有没有转换大小写的方法?

5 个回复

正序浏览
遍历你的字符串。感觉正则表达式,判断每个字符的大小写,然后在相应的转换。
回复 使用道具 举报
  1. * 分析:
  2. * 1.键盘录入字符串
  3. * 2.遍历获取每一位字符,
  4. * 3.小写转成大写。
  5. *5.大写转小写

  6. *
  7. *
  8. */
  9. public class Demo2 {
  10. public static void main(String[] args) {
  11.        

  12.         //键盘录入
  13.         Scanner sc=new Scanner(System.in);
  14.         System.out.println("请输入字符串(只可包含字母和数字):");
  15.         String s=sc.nextLine();
  16.        
  17.        
  18.        
  19.         //遍历得到每一位字符
  20.         for(int x=0; x<s.length(); x++){
  21.                 char ch = s.charAt(x);
  22.                
  23.                 //小写转成大写
  24.         if(ch>='a' && ch>='c'){
  25.                 ch=Character.toUpperCase(ch);
  26.                 System.out.print(ch);
  27.                 //大写转小写
  28.         }else if(ch>='A'&&ch<='Z'){
  29.                 ch=Character.toLowerCase(ch);
  30.                 System.out.print(ch);
  31.        
  32.         }
  33.        
  34.          
  35. }System.out.println();
  36.        
  37. }
  38. }
复制代码
我记得你问了好几遍了

评分

参与人数 1技术分 +1 收起 理由
夜默 + 1

查看全部评分

回复 使用道具 举报
思路:①从键盘接收一个字符串,需要用到输入流
*                         ②接收到字符串后有两种方法可以进行大小字母转换,
*                                 第一种利用Character类自带函数逐字符判断字符类型进行转换并输出
*                                 第二种利用大小写字母范围逐字符判断字符类型后对字符加或减32转换字符并输出。
两种办法:
1、
  1. for(int i=0;i<s.length();i++) {
  2.                         char c=s.charAt(i);//字符串中取得具体字符
  3.                         if(Character.isUpperCase(c)) {
  4.                                 sb.append(Character.toLowerCase(c));
  5.                                 }//若用isUpperCase判断字符为大写字母,则利用toLowerCase将其转换为小写字母
  6.                         else if(Character.isLowerCase(c)) {
  7.                                 sb.append(Character.toUpperCase(c));   
  8.                                 }//若用isLowerCase判断字符为小写字母,则利用toUpperCase将其转换为大写字母
  9.                         else if(Character.isDigit(c)) {
  10.                                 sb.append(c);
  11.                                 }//若用isDigit判断字符为数字,则保持不变
  12.                         else {
  13.                                 sb.append(c);   
  14.                                 }//其他字符保持不变
  15.                         }               
  16.                 return sb.toString();//返回字符串
复制代码
2、
  1. for(int i=0;i<s.length();i++) {
  2.                         char c=s.charAt(i);//字符串中取得具体字符
  3.                         if(c>='A'&&c<='Z') {
  4.                                 c+=32;
  5.                                 sb.append(c);
  6.                                 }//若判断字符为大写字母,则将其+32转换为小写字母。ASCII码中,大写字母比小写字母的数值小32
  7.                         else if(c>='a'&&c<='z') {
  8.                                 c-=32;
  9.                                 sb.append(c);
  10.                                 }//若判断字符为小写字母,则将其-32转换为大写字母。ASCII码中,小写字母比大写字母的数值大32
  11.                         else {
  12.                                 sb.append(c);   
  13.                                 }//其他字符保持不变
  14.                         }               
复制代码

评分

参与人数 1技术分 +1 收起 理由
夜默 + 1

查看全部评分

回复 使用道具 举报
思路:
1、涉及到读写,首先创建读写流对象,因为是字符串,所以采用字符流br、bw
2、设计一个方法letterChange,将字符串中的字母进行大小写互转
                (1)创建一个接收最终结果的字符串sb
                (2)将字符串转换成字符数组char[] ch
                (3)遍历数组并判断是不是小写字母,若是,则改变成大写并存入sb中
                (4)判断是不是大写字母,若是,则改变成小写并存入sb中
                (5)将不是字母的字符存入sb中
                    //判断是不是小写字母
                        if(ch[i] >= 'a' && ch[i] <= 'z'){
                                ch[i] -= 32;//小写字母比大写字母大32
                                sb.append(ch[i]);
                               
                        //判断是不是大写字母
                        }else if (ch[i] >= 'A' && ch[i] <= 'Z') {
                                ch[i] += 32;//大写字母比小写字母小32
                                sb.append(ch[i]);
                               
                        //不是字母的字符直接添加到sb中
                        }else
                                sb.append(ch[i]);
单个字符有转换大小写的方法,不过首先要将字符封装成字符对象,才能调用

评分

参与人数 1技术分 +1 收起 理由
夜默 + 1

查看全部评分

回复 使用道具 举报
把字符串中字符作判断,如果是大写,就转换成小写,如果是小写,就转换成大写
  //如果是大写字符转换成小写
     if (chAscii >= 'A' && chAscii <= 'Z')
     {
       ch[x] = (char)(chAscii - 'A' + 'a');
     }
     //如果是小写字母转换成大写
     else if (chAscii >='a' && chAscii <= 'z')
     {
      ch[x] = (char)(chAscii - 'a' + 'A');
     }

评分

参与人数 1技术分 +1 收起 理由
夜默 + 1

查看全部评分

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