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

handsome_wen

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© handsome_wen 初级黑马   /  2015-10-18 22:18  /  285 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 handsome_wen 于 2015-10-18 22:19 编辑

public class CountLettersInArray
{
public static void main(String[] args)
{
  char [] chars = createArray() ;
  System.out.println("The lowercase letters are:");
  displayArray(chars) ;

  int [] counts = countLetters(chars) ;

  System.out.println() ;
  System.out.println("The occurrences of each letter are:") ;
  displayCounts(counts);
}

public static char[] createArray()
{
  char[] chars = new char[100] ;
  for (int i = 0;i<chars.length ;i++ )
   chars = RandomCharacter.getRandomLowerCaseLetter() ;

  return chars;
}

public static void displayArray(char[] chars)
{
  for (int i = 0;i<chars.length ;i++ )
  {
   if ((i + 1)%20==0)
    System.out.println(chars + "  ") ;
   else
    System.out.print(chars + "  ") ;
  }
}

public static int[] countLetters(char[] chars)
{
  int[] counts = new int[26] ;

  for (int i = 0 ;i<chars.length ;i++ )
   counts[chars - 'a']++ ;

  return counts ;
}

public static void displayCounts(int[] counts)
{
  for (int i=0;i<counts.length ;i++ )
  {
   if ((i + 1)%10 == 0)
    System.out.println(counts + "  "
   + (char)(i + 'a')) ;
   else
    System.out.print(counts + "  "
   + (char)(i + 'a') + "  ") ;
  }
}
}

程序运行不出来,帮帮忙

2 个回复

倒序浏览
这个方法好像有问题:
public static int[] countLetters(char[] chars)
{
int[] counts = new int[26] ;

for (int i = 0 ;i<chars.length ;i++ )
counts[chars[i] - 'a']++ ;

return counts ;
}
数组counts长度为26但是chars[i] - 'a'的结果可能为负数(当chars[i]是大写字母是相减的结果为负数)
一旦数组下标为负数就会报错! 仔细检查!

评分

参与人数 1黑马币 +40 收起 理由
handsome_wen + 40 很给力!我是新手来学习!

查看全部评分

回复 使用道具 举报
public static int[] countLetters(char[] chars) {                 int[] counts = new int[26];                  for (int i = 0; i < chars.length; i++)                         counts[chars[i] - 'a']++;                  return counts;         }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马