黑马程序员技术交流社区

标题: 关于把方法当作参数的问题 [打印本页]

作者: Mr.Ji    时间: 2014-5-6 17:13
标题: 关于把方法当作参数的问题
我想定义一个可以计算程序运行时间的方法,想把每一个方法作为参数传递,但是不知道怎么写参数,希望大神指教。

import java.util.*;
public class Test11
{

        public static void main(String[] args)
        {
                // TODO Auto-generated method stub
                int[] arr1 = {32,435,46,50,7,54,64,5,6,868,9,234};//数组1
                bubbleSort(arr1);//冒泡排序
                printArray(arr1);//打印冒泡排序后的数组
               
                int[] arr2 = {3,5,645,324,46,2,46,67,578,65,23,71};//数组2
                selectSort(arr2); //选择排序
                printArray(arr2);
               
                int[] arr3 = {4,56,543,176,247,32,6,8,11,45,90,59};//数组3
                Arrays.sort(arr3);  //Arrays带有的排序方法快速排序,直接调用方法即可
                printArray(arr3);
        }


        public static long runTime(????????//怎么传进去)
        {
                long startTime=System.currentTimeMillis();//获取开始时间

                ????//调用一个方法

                long endTime=System.currentTimeMillis();//获取结束时间  

                System.out.println("程序运行时间: "+(endTime-startTime)+"ms");  
               
        }





就是把方法当参数传给计算时间程序。

作者: 曹冬明    时间: 2014-5-6 17:57
本帖最后由 曹冬明 于 2014-5-6 17:58 编辑

把方法封装成对象,然后把一个对象当做形参,然后用对象.方法就可以了
作者: ℡Bruce    时间: 2014-5-8 10:27
为什么不直接在程序开始前计算下时间,程序结束后计算下时间,然后计算出所用时间呢?
  1. public class Test12 {

  2.         public static void main(String[] args) {
  3.                 // TODO Auto-generated method stub

  4.                 long starttime=System.currentTimeMillis();
  5.                 try {
  6.                         Thread.sleep(5000);
  7.                 } catch (InterruptedException e) {
  8.                         // TODO Auto-generated catch block
  9.                         e.printStackTrace();
  10.                 }
  11.                 long endtime=System.currentTimeMillis();
  12.                 System.out.println(endtime-starttime);
  13.                
  14.         }
复制代码

作者: 362688114    时间: 2014-5-8 11:27
把方法封装成对象,创建对象,把对象当作参数传进去;
或者把排序单独写成静态方法,在一个类中直接调用;
作者: 奇迹    时间: 2014-5-9 02:43
定义一个万能接口,
interface A{
public void wn();
}
然后传入给这个计算时间的方法
public static long runTime(A a)
        {

                long startTime=System.currentTimeMillis();//获取开始时间


a.wn();
                ????//调用一个方法

                long endTime=System.currentTimeMillis();//获取结束时间  

                System.out.println("程序运行时间: "+(endTime-startTime)+"ms");  
            
        }

这样就可以了
作者: Mr.Ji    时间: 2014-5-9 09:18
曹冬明 发表于 2014-5-6 17:57
把方法封装成对象,然后把一个对象当做形参,然后用对象.方法就可以了

嗯嗯 懂了 谢谢~
作者: Mr.Ji    时间: 2014-5-9 09:24
℡Bruce 发表于 2014-5-8 10:27
为什么不直接在程序开始前计算下时间,程序结束后计算下时间,然后计算出所用时间呢? ...

谢谢哈  辛苦了 ~
作者: Mr.Ji    时间: 2014-5-9 09:32
362688114 发表于 2014-5-8 11:27
把方法封装成对象,创建对象,把对象当作参数传进去;
或者把排序单独写成静态方法,在一个类中直接调用; ...

谢谢~懂了~
作者: Mr.Ji    时间: 2014-5-9 09:33
奇迹 发表于 2014-5-9 02:43
定义一个万能接口,
interface A{
public void wn();

谢谢        




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