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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hubei3805979 中级黑马   /  2016-7-9 14:52  /  984 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

编写一个字符串方法,将控制台输入的字符串传入给该方法中,将该字符串中字符大写转小写,小写转大写,数字转为*号 其他字符不变,并统计转换多少次,(大写转小写加上小写转大写加上数字转*的总次数)在控制台输出不能使用toUpperCase()和toLowerCase()方法.
例如:
        输入: ASDFasdf123
        输出: asdfASDF***
        转换了: 11次

16 个回复

倒序浏览

可以这样解决...

本帖最后由 lostom 于 2016-7-9 15:55 编辑

package test;

public class Test8 {

        public static void main(String[] args) {
                String s = "ASDFasdf123";
                char[] c = s.toCharArray();
                s = "";
                for(int i =0 ; i<c.length; i++){
                        if(('A'<=c)&&('Z'>=c)){
                                s=s+(char)(c+32);
                        }else if(('a'<=c)&&('z'>=c)){
                                s=s+(char)(c-32);
                        }else if(('0'<=c)&&('9'>=c)){
                                s=s+'*';
                        }
                }
                System.out.println(s);
        }

}
回复 使用道具 举报
lostom 发表于 2016-7-9 15:53
package test;

public class Test8 {

你这一个空字符串怎么就这样直接和字符拼接
回复 使用道具 举报


这个简单

  1. public class CharConvert {
  2.     public static void main (String[] args) {
  3.         Scanner in = new Scanner (System.in);
  4.         System.out.println ("输入一个String:");
  5.         String s = in.nextLine ();
  6.         char[] chars = s.toCharArray ();
  7.          int count =  convert (chars);
  8.         System.out.println (chars);
  9.         System.out.println ("转换了:"+count+"次");

  10.     }

  11.     public static int convert (char[] carr) {
  12.         int count = 0;
  13.         for (int i = 0; i < carr.length; i++) {
  14.             char c = carr[i];
  15.             if (c >= '0' && c <= '9') {//是数字转*
  16.                 carr[i] = '*';
  17.             } else if (c >= 'A' && c <= 'Z') {//是大写转小写
  18.                 carr[i] = (char)(c+32);
  19.             } else if (c >= 'a' && c <= 'z') {//是小写转大写
  20.                 carr[i] = (char)(c-32);
  21.             }
  22.             count++;
  23.         }
  24.         return count;
  25.     }
  26. }
复制代码
回复 使用道具 举报

count++的位置放错了
  1. public static int convert (char[] carr) {
  2.         int count = 0;
  3.         for (int i = 0; i < carr.length; i++) {
  4.             char c = carr[i];
  5.             if (c >= '0' && c <= '9') {//是数字转*
  6.                 carr[i] = '*';
  7.                 count++;
  8.             } else if (c >= 'A' && c <= 'Z') {//是大写转小写
  9.                 carr[i] = (char)(c+32);
  10.                 count++;
  11.             } else if (c >= 'a' && c <= 'z') {//是小写转大写
  12.                 carr[i] = (char)(c-32);
  13.                 count++;
  14.             }
  15.         }
  16.         return count;
  17.     }
复制代码


这样才对
回复 使用道具 举报
hubei3805979 发表于 2016-7-9 17:40
你这一个空字符串怎么就这样直接和字符拼接

是可以的
回复 使用道具 举报
longforus 发表于 2016-7-9 20:31
count++的位置放错了

{:3_56:}谢谢了  
回复 使用道具 举报

跑不动{:3_62:}
回复 使用道具 举报
longforus 发表于 2016-7-9 20:31
count++的位置放错了

将数组所有元素存入项目根目录下
这个用什么方法
回复 使用道具 举报
亲自测试可行

搜狗截图20160709231731.png (34.82 KB, 下载次数: 18)

.........

.........
回复 使用道具 举报
明天试下,方法很多,确实比一般的字符串的处理要麻烦一点
回复 使用道具 举报

那个int _ = 2  _=3是什么
回复 使用道具 举报
糊图 发表于 2016-7-9 23:30
明天试下,方法很多,确实比一般的字符串的处理要麻烦一点

{:2_36:}基础还是不够牢固  自己想不太好想
回复 使用道具 举报
很多东西刚开始没有思路,多想想就有了,其实也没有那么难。大家一起努力吧
回复 使用道具 举报
糊图 发表于 2016-7-9 23:48
很多东西刚开始没有思路,多想想就有了,其实也没有那么难。大家一起努力吧 ...

  char[] chars = s.toCharArray ();
    public static int convert (char[] carr) {
参数列表这里可以自己设置吗
回复 使用道具 举报
hubei3805979 发表于 2016-7-9 23:14
将数组所有元素存入项目根目录下
这个用什么方法

保存?FileOutputStream
回复 使用道具 举报
longforus 发表于 2016-7-11 13:21
保存?FileOutputStream

好像要转换的的不能直接写
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马