黑马程序员技术交流社区

标题: 关于return的应用问题? [打印本页]

作者: changchunhaha    时间: 2014-4-3 16:14
标题: 关于return的应用问题?
本帖最后由 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. }
复制代码



作者: 一年_Hei    时间: 2014-4-3 16:16
你返回值是字符串类型,不写就挂,你返回类型是void 就可以不写
作者: H-Deka    时间: 2014-4-3 16:17
也可以不加return null; 这句话 。需要将public static String charCount(String str)改成 public static void charCount(String str)

作者: Dijkstra    时间: 2014-4-3 18:02
这是取代void的没有返回值的方法
作者: ok-Prince    时间: 2014-4-3 18:33
因为你这句代码 public static String charCount(String str)是需要返回一个String(字符串)的这么一个参数,既然有具体的参数需要返回,就必须有返回值。
作者: NO?    时间: 2014-4-3 18:50

                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);

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

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2