黑马程序员技术交流社区

标题: 对字符串中的字母进行大小写互转 [打印本页]

作者: 段光宇    时间: 2013-11-16 00:57
标题: 对字符串中的字母进行大小写互转
本帖最后由 段光宇 于 2013-11-16 13:12 编辑

对字符串中的字母进行大小写互转除了可以利用ASCII码加减,居然发现Character类中居然自带有判断字符和转换字符的方法,不了解的东西还有很多啊。下面贴代码,有不妥之处请大家指正。
  1. package com.itheima;
  2. import java.io.*;


  3. /*编写程序,从键盘接收一个字符串,对字符串中的字母进行大小写互转(大写字母转成小写,小写字母转成大写)。
  4. * 思路:①从键盘接收一个字符串,需要用到输入流
  5. *                         ②接收到字符串后有两种方法可以进行大小字母转换,
  6. *                                 第一种利用Character类自带函数逐字符判断字符类型进行转换并输出
  7. *                                 第二种利用大小写字母范围逐字符判断字符类型后对字符加或减32转换字符并输出。
  8. * 步骤:①定义两个实现转换功能的函数,分别利用两种不同方法实现。
  9. *                         ②在主函数中调用函数实现输入字符串对其中的大小写字母进行互转。
  10. * */
  11. public class Test8 {
  12.         //------------------------------------------------------------------------------------------------------------------------
  13.         //两种转换方法
  14.         public static String convertstr1(String s) throws Exception {
  15.                 StringBuffer sb=new StringBuffer();//定义字符串变量
  16.                 if(s.equals("over")){
  17.                         System.out.println("当前方法已经终止运行!");
  18.                         Test8.main(null);
  19.                 }
  20.                 for(int i=0;i<s.length();i++) {
  21.                         char c=s.charAt(i);//字符串中取得具体字符
  22.                         if(Character.isUpperCase(c)) {
  23.                                 sb.append(Character.toLowerCase(c));
  24.                                 }//若用isUpperCase判断字符为大写字母,则利用toLowerCase将其转换为小写字母
  25.                         else if(Character.isLowerCase(c)) {
  26.                                 sb.append(Character.toUpperCase(c));   
  27.                                 }//若用isLowerCase判断字符为小写字母,则利用toUpperCase将其转换为大写字母
  28.                         else if(Character.isDigit(c)) {
  29.                                 sb.append(c);
  30.                                 }//若用isDigit判断字符为数字,则保持不变
  31.                         else {
  32.                                 sb.append(c);   
  33.                                 }//其他字符保持不变
  34.                         }               
  35.                 return sb.toString();//返回字符串
  36.                 }
  37.         public static String convertstr2(String s) throws Exception {
  38.                 StringBuffer sb=new StringBuffer();//定义字符串变量
  39.                 if(s.equals("over")){
  40.                         System.out.println("当前方法已经终止运行!");
  41.                         Test8.main(null);                        
  42.                 }
  43.                 for(int i=0;i<s.length();i++) {
  44.                         char c=s.charAt(i);//字符串中取得具体字符
  45.                         if(c>='A'&&c<='Z') {
  46.                                 c+=32;
  47.                                 sb.append(c);
  48.                                 }//若判断字符为大写字母,则将其+32转换为小写字母。ASCII码中,大写字母比小写字母的数值小32
  49.                         else if(c>='a'&&c<='z') {
  50.                                 c-=32;
  51.                                 sb.append(c);
  52.                                 }//若判断字符为小写字母,则将其-32转换为大写字母。ASCII码中,小写字母比大写字母的数值大32
  53.                         else {
  54.                                 sb.append(c);   
  55.                                 }//其他字符保持不变
  56.                         }               
  57.                 return sb.toString();//返回字符串
  58.         }
  59.         //-----------------------------------------------------------------------------------------------------------------------
  60.         public static void convert1(){  
  61.                 BufferedReader br=null;
  62.                 System.out.println("请输入一串字符,输入over可以停止当前方法。");
  63.                 try {
  64.                         br=new BufferedReader(new InputStreamReader(System.in));//接受字符串
  65.                         String s=null;
  66.                         while((s=br.readLine())!=null){
  67.                         System.out.println(convertstr1(s));//调用convertstr1函数对字符串进行转换
  68.                         }
  69.                         }
  70.                 catch(Exception e) {
  71.                         System.out.println(e.getMessage());  
  72.                         }
  73.         }
  74.         public static void convert2(){  
  75.                 BufferedReader br=null;
  76.                 System.out.println("请输入一串字符,输入over可以停止当前方法。");
  77.                 try {
  78.                         br=new BufferedReader(new InputStreamReader(System.in));//接受字符串
  79.                         String s=null;
  80.                         while((s=br.readLine())!=null){
  81.                         System.out.println(convertstr2(s));//调用convertstr2函数对字符串进行转换
  82.                         }
  83.                         }
  84.                 catch(Exception e) {
  85.                         System.out.println(e.getMessage());  
  86.                         }
  87.         }
  88.         public static void main(String[] args) {
  89.                 System.out.println("请输入编号选择方法:\n1.Character类转换方法\n2.ASCII码转换方法\n");               
  90.                 try {
  91.                         BufferedReader br1=new BufferedReader(new InputStreamReader(System.in));
  92.                         String a=br1.readLine();
  93.                         if(a.equals("1")){
  94.                                 System.out.println("Character类转换方法:");
  95.                                 convert1();
  96.                         }
  97.                         if(a.equals("2")){
  98.                                 System.out.println("ASCII码转换方法:");
  99.                                 convert2();
  100.                         }
  101.                         if(!a.equals("1")||!a.equals("2")){
  102.                                 System.out.println("编号输入错误!");
  103.                                 Test8.main(null);
  104.                         }
  105.                 } catch (IOException e) {
  106.                         e.printStackTrace();
  107.                 }
  108.         }
  109. }

复制代码

作者: hubby    时间: 2013-11-16 07:49
  1. import java.io.*;
  2. public class Test6 {
  3.         //因为主要目的是写大小写互转内容,所以没处理IO异常,直接throws了sorry
  4.         public static void main(String[] args) throws IOException
  5.         {
  6.                 //键盘写入
  7.                 BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
  8.                
  9.                
  10.                 String line=null;
  11.                 //读取
  12.                 while ((line=bufr.readLine())!=null)
  13.                 {
  14.                         //输入over停止
  15.                         if("over".equals(line))
  16.                                 break;
  17.                         //将读取的line字符串转成字符数组。
  18.                         char[] arr=line.toCharArray();
  19.                         //定义个空字符串存储
  20.                         StringBuffer n="";
  21.                         //遍历这个字符串,然后将其中字符大小写互转,将转换后的字符存储进n中
  22.                         for (int x=0;x<arr.length ;x++ )
  23.                         {
  24.                                 if( Character.isLowerCase(arr[x]))
  25.                                 {
  26.                                         n+=Character.toUpperCase(arr[x]);
  27.                                 }
  28.                                 else
  29.                                         n+=Character.toLowerCase(arr[x]);
  30.                         }
  31.                                 System.out.println(n);


  32.                 }
  33.                 bufr.close();
  34.        
  35.         }

  36. }
复制代码
楼主的好像可行啊。。
作者: 黄炳期    时间: 2013-11-16 11:01
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html
作者: 鹏飞    时间: 2015-8-12 13:59
牛呀!!!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2