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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 从前有个人 中级黑马   /  2013-11-3 19:54  /  1276 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


public class gettime {

        /**
         * @param args
         */
        public static void main(String[] args) {
               
                SetTime time = new SetTime();
                System.out.println(time.end-time.start);
        }
}

abstract class GetTime{
        long start = System.currentTimeMillis();
        abstract double runCode();
       
        long end = System.currentTimeMillis();
}

class RunCode{
        static double runCode(){
                double x =9;
                for(; x<99 ;x++)
                        x*=x;
                return x;
        }
}

class SetTime extends GetTime{
       
         double runCode(){  //此行的多个标记: -此方法必须返回double类型的结果; -实现GetTime.runCode
                 RunCode.runCode();
        }
}

注释的那一行会报错,内容如注释所述。求解答,错在哪里,如何修改。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

8 个回复

倒序浏览
你注释的那一行是关键字没加,return
  1. class SetTime extends GetTime{
  2.    
  3.      double runCode()
  4.      {  //此行的多个标记: -此方法必须返回double类型的结果; -实现GetTime.runCode
  5.              return RunCode.runCode();
  6.     }
  7. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
To + 1 很给力!

查看全部评分

回复 使用道具 举报
1,看看java文件命名是否和主函数类名相同
2,最后一段代码没加return语句
回复 使用道具 举报
麦者 发表于 2013-11-3 20:06
你注释的那一行是关键字没加,return

呃,你可以加一下试一试…… 加了之后运行会疯的…… 而且,为啥要加return,重写方法为啥需要写个return上去?
回复 使用道具 举报
  1. package test;

  2. public class GetTest {

  3.         public static void main(String[] args) {
  4.                
  5.                 SetTime time = new SetTime();
  6.                 System.out.println(time.end-time.start);
  7.         }
  8. }

  9. abstract class GetTime{
  10.         long start = System.currentTimeMillis();
  11.         abstract double runCode();
  12.       
  13.         long end = System.currentTimeMillis();
  14. }

  15. class RunCode{
  16.         static double runCode(){
  17.                 double x =9;
  18.                 for(; x<99 ;x++)
  19.                         x*=x;
  20.                 return x;
  21.         }
  22. }

  23. class SetTime extends GetTime{
  24.       
  25.          double runCode()   //此行的多个标记: -此方法必须返回double类型的结果;
  26.          
  27.          {  
  28.                return RunCode.runCode();  //return 代表返回值    如果不想加return 请将上面的duuble 改为void
  29.         }
  30. }
  31. <font color="Navy">
  32. </font>
复制代码
  方法的定义方式, 权限修饰符 +返回值类型+方法名+()+{语句序列}
     double  代表double类型返回值   ;如果定义了返回值类型,自然要用  return返回内容
       void 代表没有返回值, 定义为无返回值就不用返回了



评分

参与人数 1技术分 +1 收起 理由
To + 1 赞一个!

查看全部评分

回复 使用道具 举报
class SetTime extends GetTime
{
       double runCode()  //此行的多个标记: -此方法必须返回double类型的结果; -实现GetTime.runCode
      {
                 RunCode.runCode();
      }
}
这里出现的问题是方法的定义出现问题,类SetTime继承GetTime类,重写方法runCode();因此,函数中必须符合类GetTime声明方法的要求,要有double型的返回值。
      语句应为return RunCode.runCode();
回复 使用道具 举报
从前有个人 发表于 2013-11-3 20:22
呃,你可以加一下试一试…… 加了之后运行会疯的…… 而且,为啥要加return,重写方法为啥需要写个return ...

因为那个方法要有返回值的,
回复 使用道具 举报
杨增坤 发表于 2013-11-3 22:05
因为那个方法要有返回值的,

我重写的内容是调用静态方法,被调用的那个方法中有返回值,为什么还要再写一个return?
回复 使用道具 举报
从前有个人 发表于 2013-11-3 23:26
我重写的内容是调用静态方法,被调用的那个方法中有返回值,为什么还要再写一个return? ...

但是你必须要使用一个变量来接受,否则就相当于一个变量,不是当前当方法返回值,
相当于   public int(){
        5;
}

不是当前方法返回值。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马