import java.io.*;
public class factorial{
public static void main(String[] args) {
  System.out.println("Please enter a integer:");
  double n=0;
  try{
  BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
  String s=in.readLine();
  n=Double.parseDouble(s);   
  }catch(IOException e){}
  factorial r=new factorial();
  double m=r.factorial1(n);
  System.out.println("!"+n+"="+m);
  
}
      static double factorial1(double k){
       double m=1;
       for(;k>0;k--)
       m*=k;
       return m;
       
      }
  彩色部分 编译器说This static method factorial1(double)form the type factorial shoud be accessed in a static way
但是能够通过运行    请帮我解释一下 啊  谢谢!

解决方案 »

  1.   

    静态方法属于类方法,应使用类名+方法名的方式来访问而不是实例方法,实例方法是使用引用+方法名的方式来访问的应该使用factorial.factorial1(n);
      

  2.   

    静态方法是可以通过new出来的对象调用的,但通常是采用类名来直接调用,而不需要你new
      

  3.   

    嗯,个人也是这样觉得,因为方法是用的static静态的,所以在调用的时候就用类名.方法名就可以了,也可以创建一个对象,然后用这个对象名.方法来调用这个方法,两种方法都是行得通的,但通常对于static修饰的方法都是直接采用类名.方法名引用就可以了.也就是为什么LZ的代码能够通过运行的原因.本人也是初学Java,不对的地方希望大家多多指出.
      

  4.   

    factorial r=new factorial(); 
      double m=r.factorial1(n); 类名+方法名factorial.factorial1(n); 
      

  5.   

    楼上的说的都很清楚了,呵呵。本人也刚学。直接用类名调用,会比较清楚,看代码的时候一看就知道是static函数,我觉得这样子比较好。