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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 王宝康 于 2012-7-12 17:39 编辑

  1. package string;
  2. public class StringDemo2 {
  3. /**
  4.   * @param args
  5.   * 获取所给字符串中大小写字母分别的个数
  6.   * 思路:定义变量作为累加器,先把字符串转换成字符数组数组,然后遍历数组,对数组元素进行'a'-'z','A'-'Z'
  7.   *   的范围判断。
  8.   */
  9. public static void main(String[] args) {
  10.   // TODO Auto-generated method stub
  11.   String str = "AsdWsaJswO";
  12.   char [] arr = str.toCharArray();
  13.   int lowerElement = 0;
  14.   int upperElement = 0;
  15.   int []arr1 = new int [str.length()];
  16.   int lowerIndex = -1;
  17.   int upperIndex = -1;
  18.   for (int i = 0; i < arr.length; i++) {
  19.    if (arr[i]>='a'&&arr[i]<='z') {
  20.     lowerElement++;
  21.     for (int j = 0; j < arr1.length; j++) {
  22.      arr1[j] = arr[i];
  23.     }
  24.    }
  25.    if (arr[i]>='A'&& arr[i]<='Z') {
  26.     upperElement++;
  27.    }
  28.   }
  29.   System.out.println("字符元素为:");
  30.   for (int i = 0; i < arr.length; i++) {
  31.    if (i!=arr.length-1) {
  32.     System.out.print(arr[i]+",");
  33.    }
  34.    if (i==arr.length-1) {
  35.     System.out.println(arr[i]);
  36.    }   
  37.   }
  38.   System.out.println("大写字母的个数为:"+upperElement+"...."+"小写字母的个数为:"+lowerElement);
  39.   System.out.println("小写字母为:");
  40.   for (int i = 0; i < arr1.length; i++) {
  41.    if (i!=arr1.length-1) {
  42.     System.out.print(arr1[i]+",");
  43.    }
  44.    if (i==arr1.length-1) {
  45.     System.out.println(arr1[i]); //为啥木有打印小写字母
  46.    }   
  47.   }
  48. }
  49. }

  50. 这是看毕老师的视频看来的一个小程序,我做了适当的修改,就是想打印出大写或者小写字母,思路是定义一个数组存储符合条件的大写或者小写字母,最后打印输出,可是却没有打印出预想结果...
复制代码

未命名.jpg (15.37 KB, 下载次数: 33)

运行截图

运行截图

评分

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

查看全部评分

6 个回复

倒序浏览
public static boolean isAcronym(String word)
{
  for(int i = 0; i < word.length(); i++)
  {
   char c = word.charAt(i);
   if (!Character.isLowerCase(c))
   {
    return false;
   }
  }
  return true;
}

这是判断大小写的  个数的话  就很简单了吧
回复 使用道具 举报
许瑞航 发表于 2012-7-12 17:23
public static boolean isAcronym(String word)
{
  for(int i = 0; i < word.length(); i++)

我就想知道我新定义了一个数组存储小写字母,然后打印咋木有打印出来,错误出现在哪儿?
回复 使用道具 举报

  1. if (arr[i]>='a'&&arr[i]<='z') {
  2.       lowerElement++;
  3.       for (int j = 0; j < arr1.length; j++) {
  4.             arr1[j] = arr[i];
  5.       }
  6. }
复制代码
这里写的不对,
怎么找到一个小写字母后循环给arr1的每个位置都放上这个小写字母了呢,
改成

  1. if(arr[i]>='a'&&arr[i]<='z'){
  2.            arr1[lowerElement++]=arr[i];
  3. }
复制代码
还有,存入数组的是int,
应该在存入或读取的时候转换成char类型的

回复 使用道具 举报
首先,我想说,你要存储小写字母,为什么不定义一个char数组,
而要定义一个int数组?

在第22行的循环里,你只是将唯一一个值放入到了arr1的数组中
其实放的只是最后一个字母,数组中的每个元素都是一样的值

可以这样修改一下,从第19行开始:
  1. int j = 0;
  2.                 for (int i = 0; i < arr.length; i++) {
  3.                         if (arr[i] >= 'a' && arr[i] <= 'z') {
  4.                                 lowerElement++;
  5. //                                for (int j = 0; j < arr1.length; j++) {
  6. //                                        arr1[j] = arr[i];
  7. //                                }
  8.                                
  9.                                 arr1[j] = arr[i];
  10.                                 j++;
  11.                         }
  12.                         if (arr[i] >= 'A' && arr[i] <= 'Z') {
  13.                                 upperElement++;
  14.                         }
  15.                 }
复制代码
这里的arr1可以是个char数组,除非你非要在后面自己转换
其实这里面的数组长度并不好确定,建议使用集合
回复 使用道具 举报
温少邦 发表于 2012-7-12 22:03
这里写的不对,
怎么找到一个小写字母后循环给arr1的每个位置都放上这个小写字母了呢,
改成还有,存入数组 ...

谢谢,了解了,谢谢!!!
回复 使用道具 举报
张天天 发表于 2012-7-12 22:06
首先,我想说,你要存储小写字母,为什么不定义一个char数组,
而要定义一个int数组?

好的,我修改下运行正常后,再贴出来!谢谢!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马