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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© changchunhaha 初级黑马   /  2014-4-3 16:14  /  982 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 changchunhaha 于 2014-4-3 16:29 编辑
  1. import java.util.*;

  2. class MapTest
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 charCount("aacfededbabd");// 这个程序是打印出给定字符串中,每个字符出现的次数问题。
  7.         }

  8.         public static String charCount(String str)
  9.         {
  10.                 char[] chs = str.toCharArray();

  11.                 TreeMap<Character,Integer> tm = new TreeMap<Character,Integer>();

  12.                 for(int x=0; x<chs.length; x++)
  13.                 {
  14.                         Integer value = tm.get(chs[x]);

  15.                         if(value==null)
  16.                         {
  17.                                 tm.put(chs[x],1);
  18.                         }
  19.                         else
  20.                         {
  21.                                 value = value + 1;
  22.                                 tm.put(chs[x],value);
  23.                         }
  24.                 }
  25.                
  26.                 System.out.println(tm);

  27.                 return null; //非常不明白这为什么要这么写?
  28.         }
  29. }
复制代码


7 个回复

倒序浏览
你返回值是字符串类型,不写就挂,你返回类型是void 就可以不写
回复 使用道具 举报
也可以不加return null; 这句话 。需要将public static String charCount(String str)改成 public static void charCount(String str)
回复 使用道具 举报
这是取代void的没有返回值的方法
回复 使用道具 举报
因为你这句代码 public static String charCount(String str)是需要返回一个String(字符串)的这么一个参数,既然有具体的参数需要返回,就必须有返回值。
回复 使用道具 举报

                return null; //非常不明白这为什么要这么写?
        }                          //答因为此方法需要一个String类型的返回值。如果不写的话,编译就不会通过。
                                 //你的疑问是不是。明明已经有了答案还要返回值做什么吧?对其实这里的返回的null一点作用也没有。为了代码的健壮性,可以将代码的改成这样子。
import java.util.*;

class MapTest
{
        public static void main(String[] args)
        {
                charCount("aacfededbabd");// 这个程序是打印出给定字符串中,每个字符出现的次数问题。
        }

        public static void charCount(String str)
        {
                char[] chs = str.toCharArray();

                TreeMap<Character,Integer> tm = new TreeMap<Character,Integer>();

                for(int x=0; x<chs.length; x++)
                {
                        Integer value = tm.get(chs[x]);

                        if(value==null)
                        {
                                tm.put(chs[x],1);
                        }
                        else
                        {
                                value = value + 1;
                                tm.put(chs[x],value);
                        }
                }
               
                System.out.println(tm);

        }
}
回复 使用道具 举报
函数charCount的返回值类型是String,最后必须有return,函数最终目的是打印tm,而不是返回String
回复 使用道具 举报
哎呦 基本常识啊  因为你的charCount函数的返回值是String啊,这里你将你的程序运行结果通过System.out.println();语句打印到控制台了。所以没什么必要返回什么,所以就用返回null来防止发生编译错误。如果把函数返回值改为void,那就不用写了。

如果你要进行其他的操作,比如输出这个字符串中出现次数最多的那个字符ch,那么就将函数返回值设置为char,并返回该字符,这时要用到return ch;  都是一个道理。 也就是说如果你需要函数的运行结果的话就将该结果用return返回,并把函数的返回值类型改为相应的类型。如果只是打印出运算结果的话,那就将函数的返回值类型设置为void,这样就不用return语句了。  希望可以帮到 你。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马