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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. /*
  2. 编写程序,从键盘接收一个字符串,对字符串中的字母进行大小写互转(大写字母转成小写,小写字母转成大写)。
  3. */
  4. package com.itheima;
  5. import java.util.Scanner;//导入Scanner类
  6. public class Test06
  7. {
  8.         public static void main(String[] args)
  9.         {
  10.                 System.out.print("请从键盘上输入一段字符串:");
  11.                 Scanner sc=new Scanner(System.in);//建立Scanner类对象,键盘输入语句
  12.                 String s=sc.next();//将输入字符串赋值到String类型的s变量中
  13.                 StringTool.stringSwap(s);
  14.         }
  15. }



  16. class StringTool//将字符串转换封装为一个类
  17. {
  18.         //建立小写字母表
  19.         private static char[]ch1={'a','b','c','d','e','f','g',
  20.                                                           'h','i','j','k','l','m','n',
  21.                                       'o','p','q','r','s','t','u',
  22.                                       'v','w','x','y','z'};
  23.         //建立大写字母表
  24.         private static char[]ch2={'A','B','C','D','E','F','G',
  25.                                           'H','I','J','K','L','M','N',
  26.                                           'O','P','Q','R','S','T','U',
  27.                                           'V','W','X','Y','Z'};
  28.         //封装字符串大小写转化功能函数
  29.         public static void stringSwap(String s)
  30.         {
  31.                 char[]ch3=s.toCharArray();//将字符串转化为字符数组
  32.                 char[]ch4=new char[ch3.length];
  33.                 for(int x=0;x<ch3.length;x++)//通过for循环和if语句判断字符数组的元素是否能在字母表中找到,并进行转换
  34.                 {
  35.                         if(ch3[x]==lookFor(ch1,ch3[x]))
  36.                                 ch4[x]=(char)((int)ch3[x]-32);
  37.                         if(ch3[x]==lookFor(ch2,ch3[x]))
  38.                                 ch4[x]=(char)((int)ch3[x]+32);
  39.                         if(ch3[x]!=lookFor(ch1,ch3[x])&&ch3[x]!=lookFor(ch2,ch3[x]))
  40.                                 ch4[x]=ch3[x];
  41.                 }
  42.                 System.out.println(new String(ch4,0,ch4.length));//通过String的构造函数将字符数组转化为字符串
  43.         }


  44.         //封装功能函数:寻找字符串中的字符在哪个表中
  45.         private static char lookFor(char[]arr,char ch)
  46.         {
  47.                 for(int x=0;x<arr.length;x++)
  48.                         if(ch==arr[x])
  49.                                 return arr[x];
  50.                 return '0';
  51.         }
  52. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黑妞~ + 1

查看全部评分

15 个回复

正序浏览
田富丰 发表于 2014-5-27 20:35
不知道对你有帮助没有!

哇塞。32个赞!
回复 使用道具 举报
突然发现 半年没看java  我居然不是很会了啊  小写转大写不是有个叫 to Up什么那个?
回复 使用道具 举报
屈_zi 发表于 2014-5-28 09:33
这是我做这道题的代码:

非常感谢!我三流大学本科文科专业毕业,刚开始学java基础,想去黑马,求建议?
回复 使用道具 举报
无所谓啦 发表于 2014-5-27 09:38
大神,请求您写上完整代码,并附上注释   让新手们也能看懂    学习学习!非常感谢你啊 ...

这是我做这道题的代码:
  1. import java.util.Scanner;

  2. public class Test7 {

  3.         /**
  4.          * 将输入的字母ASCII码转换成对应的大小字母的ASCII码,若输入的并非字母,返回0
  5.          * @param i
  6.          * @return
  7.          */
  8.         static int swapLetter(int i){
  9.             int re = 0;
  10.             if( i >=65 && i <= 90)
  11.                     re = i + 32;
  12.             else if( i >= 97 && i<=122 )
  13.                      re = i -32;
  14.             return re;
  15.           }
  16.         /**
  17.          * 将输入的字符串进行大小写转换,如果输入中包含非字母字符,返回一个错误信息
  18.          * @param str
  19.          * @return
  20.          */
  21.         static String swapString(String str){
  22.                 String re = new String();
  23.                 for(int i = 0; i < str.length(); i++){               
  24.                         if(swapLetter ( (int)str.charAt( i ) ) == 0 ){
  25.                                 re = "input error!";
  26.                                 break;
  27.                         }
  28.                         re +=( (char)swapLetter ( (int)str.charAt( i ) ) );                       
  29.                 }
  30.                 return re;
  31.         }
  32.    
  33.         //main
  34.         public static void main(String[] args) {
  35.                 // TODO Auto-generated method stub
  36.                 Scanner s = new Scanner( System.in);
  37.                 String input = s.nextLine();                               
  38.                 System.out.println( swapString(input) );       
  39.                 s.close();
  40.         }

  41. }
复制代码



回复 使用道具 举报
表示看不懂!
回复 使用道具 举报
学习了,
回复 使用道具 举报
学习了。
回复 使用道具 举报
String里面不是有toUpCase和toDownCase的方法吗,干嘛这么复杂:L
回复 使用道具 举报
  1. public class Test8 {
  2.         public static void main(String[] args) {
  3.                 //创建键盘录入
  4.                 Scanner sc = new Scanner(System.in);
  5.                 while (true) {
  6.                         //将键盘录入的信息记录到字符串中
  7.                         String sourceStr = sc.next();
  8.                         //创建一个函数change方法,并将这个字符串做为参数
  9.                         String changeStr = change(sourceStr);
  10.                         //将change返回的字符串进行打印
  11.                         System.out.println(changeStr);
  12.                 }
  13.         }

  14.         private static String change(String sourceStr) {
  15.                 //创建一个StringBuilder对象
  16.                 StringBuilder sb = new StringBuilder();
  17.                 //用for循环遍历字符串
  18.                 for (int i = 0; i < sourceStr.length(); i++) {
  19.                         //通过charAt方法和if语句判断这个字符串中的每个字符是否是小写
  20.                         if (sourceStr.charAt(i) >= 'a' && sourceStr.charAt(i) <= 'z') {
  21.                                 //将charAt返回的字符转换成字符串,通过字符串的方法将其转换成大写,并装入到StringBuilder中
  22.                                 sb.append((sourceStr.charAt(i) + "").toUpperCase());
  23.                                 //通过charAt方法和if语句判断这个字符串中的每个字符是否是大写
  24.                         } else if (sourceStr.charAt(i) >= 'A' && sourceStr.charAt(i) <= 'Z') {
  25.                                 //将charAt返回的字符转换成字符串,通过字符串的方法将其转换成小写,并装入到StringBuilder中
  26.                                 sb.append((sourceStr.charAt(i) + "").toLowerCase());
  27.                         }

  28.                 }
  29.                 //通过StringBuilder中 的toString方法转换成字符串返回
  30.                 return sb.toString();
  31.         }
  32. }
复制代码

不知道对你有帮助没有!
回复 使用道具 举报
屈_zi 发表于 2014-5-22 10:16
if(c >= 97 && c = 65 && c

大神,请求您写上完整代码,并附上注释   让新手们也能看懂    学习学习!非常感谢你啊:handshake
回复 使用道具 举报
都是大神级别的任务,很好!!!
回复 使用道具 举报
茂子 发表于 2014-5-22 08:47
是要进行ASCII的转换,我的代码上也有这个步骤,但是还要判断一个字符串上的字母是否大小写撒,然后才能 ...

if(c >= 97 && c <= 122) 小写字母
if(c >= 65 && c <= 90) 大写字母
回复 使用道具 举报
屈_zi 发表于 2014-5-21 10:04
小写转大写,大写转小写,用ASCII码进行转换时最有效的

小写字母:97-122

是要进行ASCII的转换,我的代码上也有这个步骤,但是还要判断一个字符串上的字母是否大小写撒,然后才能转换。。。。
回复 使用道具 举报
小写转大写,大写转小写,用ASCII码进行转换时最有效的

小写字母:97-122
大写字母:65-90

小写转大写,就是将小写字母的ASCII码减去32  char c = (char)(c - 32)
大写转小写,就是将大写字母的ASCII码加上32  char c = (char)(c + 32)

回复 使用道具 举报
【志在云十】小写数字转大写数字
http://bbs.itheima.com/thread-118711-1-1.html
(出处: 黑马程序员IT技术论坛)
我也做了,而且没有用到数组,所以啰嗦点....
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马