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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 董玲飞 中级黑马   /  2014-2-25 16:54  /  1543 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

从键盘接收一个字符串,对字符串中的字母进行大小写互转(大写字母转成小写,小写字母转成大写)。应该怎么做,用什么方法呢???String  toUpperCase()和String  toLowerCase()只能大写转小写或小写转大写,哪位朋友帮忙答下......

评分

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

查看全部评分

6 个回复

倒序浏览
Character类有两个静态方法可以判断
读取键盘录入的输入字节流,每次读一个就判断下。
Character.isLowerCase(char ch) 判断是否为小写
Character.isUpperCase(char ch) 判断是否为大写

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 xiaochen33520 于 2014-2-25 17:17 编辑

先通过toCharArray()转换成字符数组,然后进行判断大小写,如果是大写就加上32,如果是小写就-32,然后再把字符连接成字符串数组就OK,这里建议用StringBuilder

评分

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

查看全部评分

回复 使用道具 举报
  1. class Demo
  2. {
  3.         public static void main(String[] args) throws Exception
  4.         {
  5.                 //为了方便获取输入字符串,使用包装流讲标准输入流包装成BufferedReader
  6.                 BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
  7.                
  8.                 String str = "";
  9.                
  10.                 //循环获取输入的每行字符串
  11.                 while((str = bufr.readLine()) != null)
  12.                 {
  13.                         //将字符串编程Char类型数组
  14.                         char[] charArray = str.toCharArray();
  15.                        
  16.                         //遍历charArray数组,如果是字母则进行大小写互转
  17.                         for(int i = 0; i < charArray.length; i++)
  18.                         {
  19.                                 if(charArray[i] >= 'a' && charArray[i] <= 'z')
  20.                                 {
  21.                                         //如果是小写字母,则转换成大写
  22.                                         charArray[i] -= ('a' - 'A');        //减去大小写字母之间ASCII码值的差值
  23.                                 }
  24.                                 else if(charArray[i] >= 'A' && charArray[i] <= 'Z')
  25.                                 {
  26.                                         //如果是大写字母,则转换成小写
  27.                                         charArray[i] += ('a' - 'A');        //加上大小写字母之间ASCII码值的差值
  28.                                 }
  29.                                 //其他字符不变
  30.                         }
  31.                        
  32.                         //输出结果
  33.                         System.out.println(new String(charArray));
  34.                 }
  35.         }

  36. }
复制代码

评分

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

查看全部评分

回复 使用道具 举报
  1. import java.io.*;
  2. class CharChangeDemo {
  3.         public static void main(String[] args)  throws IOException {
  4.                 //读入一行键盘输入
  5.                 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  6.                 String str = br.readLine();

  7.                 //将字符串转换为字符数组
  8.                 char[] charArray = str.toCharArray();

  9.                 //定义一个字符串缓冲区添加每一个转换的字符
  10.                 StringBuilder sb = new StringBuilder();
  11.                 String strTemp=null;
  12.                 //建立Character类,为了使用其中的方法:isLowerCase isUpperCase toString
  13.                 Character ch = new Character('a');
  14.                 for (int i=0,String strTemp=null; i<charArray.length; i++) {
  15.                         //如果该字符是小写,则转换为字符串使用其转化大写方法
  16.                         if(ch.isLowerCase(charArray[i]))
  17.                                 strTemp = ch.toString(charArray[i]).toUpperCase();
  18.                         //如果该字符是大写,则转换为字符串使用其转化小写方法
  19.                         else if(ch.isUpperCase(charArray[i]))
  20.                                 strTemp = ch.toString(charArray[i]).toLowerCase();
  21.                         //如果不是字符,则直接转化为字符串
  22.                         else
  23.                                 strTemp = ch.toString(charArray[i]).toString();

  24.                         //将转化的字符存入缓冲区
  25.                         sb.append(strTemp);
  26.                 }

  27.                 br.close();

  28.                 System.out.println(sb);
  29.         }
  30. }
复制代码

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 大茶壶 于 2014-2-25 21:02 编辑

  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.util.Scanner;

  5. public class Test5 {
  6. public static void main(String[] args) throws Exception {
  7. String data = new Scanner(System.in).nextLine();
  8. System.out.println(convert(data));
  9. }
  10. /**
  11. * 大小写转换
  12. */
  13. public static String convert(String data) {
  14. int dt = 'a' - 'A'; //大写和小写之间的差距,实际是32;
  15. char[] chars = data.toCharArray();
  16. for (int i = 0; i < chars.length; i++) {
  17. if (chars[i] >= 'a' && chars[i] <= 'z') {
  18. //是小写字母
  19. chars[i] -= dt;
  20. } else if (chars[i] >= 'A' && chars[i] <= 'Z') {
  21. //是大写字母
  22. chars[i] += dt;
  23. }
  24. //非字母的不管了
  25. }
  26. return new String(chars);
  27. }
  28. }
复制代码


评分

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

查看全部评分

回复 使用道具 举报
zjf 中级黑马 2014-2-25 21:07:49
7#
大写小写互相换,思路:
          1、键盘接收字符,转数组
          2、遍历,取出每一个,进行判断
          3、判断的是字符的ASCII,大写的范围是65~90,小写的范围是97~122
               所以大写的加上32,就转成小写
               小写的减去32,就转成大写啦
          4、加或者减后的结果,存储回数组
          5、再转成字符就成心啦
        private static String cast(String s){
                      //判断:若接收数据不在大小写的范围内,就抛异常
                if ( s == null )
                        throw new RuntimeException("字符串没有指向");
                      //判断:若没有输入符号,就直接返回
                if( "".equals(s))
                        return s;
                   //输入的数据有效后,再进入大小写转换
                char[] ch = s.toCharArray();
                for( int x = 0 ; x < ch.length ; x++){
                        if( ch[x] >=65 && ch[x]<=90){
                                ch[x] = (char) (ch[x] + 32);
                        }else if( ch[x] >= 97 && ch[x] <=122){
                                ch[x] = (char) (ch[x] - 32);
                        }
                }
                return new String(ch);

评分

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

查看全部评分

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