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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马超(Andy) 中级黑马   /  2014-7-27 23:27  /  2220 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天看视频,做一下模板模式练习时遇到的问题 代码如下
/*
需求:获取一段程序运行的时间。
分析:获取程序开始运行的时间,再获取程序运行结束的时间。最后结束时间减去开始时间就是程序运行时间
获取时间函数:System.currentTimeMillis();  返回类型 long
*/
class TemplateDemo
{
    public static void main(String[] args)
    {
        long t = GetTime.getTime();
        System.out.println("毫秒:" + t);

        System.out.println("Hello World!");
    }
}

public class GetTime
{

    public static long getTime()
    {
        long start = System.currentTimeMillis();

        for (int i = 0; i < 10000; i++)
        {
            System.out.print(i);
        }

        long end = System.currentTimeMillis();
        
        return (end - start);
    }
}

编译时报错如下:
F:\Language\designmode>javac TemplateDemo.java
TemplateDemo.java:17: 错误: 类GetTime是公共的, 应在名为 GetTime.java 的文件中声

public class GetTime
       ^
1 个错误
==========================================
把上边的public去掉编译就会成功,想了半天没想明白怎么回事......求教




11 个回复

倒序浏览
一个 *.java 文件中,只能有一个public 的类,而且这个public修饰的这类必需要和这个文件名相同。
所以去掉public,或者在另外一个*.java文件中定义这个public类就可以了。
回复 使用道具 举报 1 0
public修饰的类的类名需要与你这个java文件的名称一致,你把文件名改成这个类名,或者去掉public都可以通过
回复 使用道具 举报
第二个函数  public class GetTime 中,public应改为static,因为主函数是static修饰的,只能调用被static修饰的函数!!!我是这样理解的,不知道正不正确!!
回复 使用道具 举报
用毕老师的话说是静态只能调用静态(变量)!!!
回复 使用道具 举报
王乐乐 发表于 2014-7-27 23:35
一个 *.java 文件中,只能有一个public 的类,而且这个public修饰的这类必需要和这个文件名相同。
所以去掉pu ...

搜嘎搜嘎,就是介个问题:victory:
回复 使用道具 举报
DSY 发表于 2014-7-27 23:40
public修饰的类的类名需要与你这个java文件的名称一致,你把文件名改成这个类名,或者去掉public都可以通过 ...

嗯,果然如此,谢啦:victory:
回复 使用道具 举报
不客气,请问兄弟报的哪个班?
回复 使用道具 举报
王乐乐 发表于 2014-7-28 00:26
不客气,请问兄弟报的哪个班?

云12 .....
回复 使用道具 举报
LFW 中级黑马 2014-7-28 10:07:24
10#
DSY 发表于 2014-7-27 23:40
public修饰的类的类名需要与你这个java文件的名称一致,你把文件名改成这个类名,或者去掉public都可以通过 ...

对的。我也是这么解释的。楼主的基础不够扎实。你的问题会被老毕 叼 的。。。哈哈
回复 使用道具 举报
这个得学
回复 使用道具 举报
学习学习
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马