帮忙看一下这段代码有问题吗?为什么在main()方法里调用一个类里的static方法(answer())总是提示"找不到方法"?
用的是JCreate 3.5 Pro编译器.
import java.util.*;interface SharedConstants
{
int NO=0;
int YES=1;
int MAYBE=2;
int LATER=3;
int SOON =4;
int NEVER=5;
}class Question implements SharedConstants
{
Random rand=new Random();
int ask()
{
int prob=(int)(100*rand.nextDouble());
if(prob<30)
return NO;
else if(prob<60)
return YES;
else if(prob<75)
return MAYBE;
else if(prob<90)
return LATER;
else if(prob<100)
return SOON;
else
return NEVER;
}
}class AskMe implements SharedConstants
{
static void answer(int result)
{
switch(result)
{
case NO:
System.out.println("No");
break;
case YES:
System.out.println("Yes");
break;
case MAYBE:
System.out.println("Maybe");
break;
case LATER:
System.out.println("Later");
break;
case SOON:
System.out.println("Soon");
break;
case NEVER:
System.out.println("Never");
break;
}
}
}class SeveralSubClassSample
{
public static void main(String args[])
{
Question q = new Question();
for(int i=1;i<10;i++)
{
answer(q.ask());
}
}
}谢谢!
用的是JCreate 3.5 Pro编译器.
import java.util.*;interface SharedConstants
{
int NO=0;
int YES=1;
int MAYBE=2;
int LATER=3;
int SOON =4;
int NEVER=5;
}class Question implements SharedConstants
{
Random rand=new Random();
int ask()
{
int prob=(int)(100*rand.nextDouble());
if(prob<30)
return NO;
else if(prob<60)
return YES;
else if(prob<75)
return MAYBE;
else if(prob<90)
return LATER;
else if(prob<100)
return SOON;
else
return NEVER;
}
}class AskMe implements SharedConstants
{
static void answer(int result)
{
switch(result)
{
case NO:
System.out.println("No");
break;
case YES:
System.out.println("Yes");
break;
case MAYBE:
System.out.println("Maybe");
break;
case LATER:
System.out.println("Later");
break;
case SOON:
System.out.println("Soon");
break;
case NEVER:
System.out.println("Never");
break;
}
}
}class SeveralSubClassSample
{
public static void main(String args[])
{
Question q = new Question();
for(int i=1;i<10;i++)
{
answer(q.ask());
}
}
}谢谢!
AskMe.answer
楼上的楼主门都是精英啊,以后要多多请教了
问题解决了. 不过还有点不明白的是:new AskMe().answer(q.ask()); 与AskMe.answer(q.ask());有没什么区别?什么情况下用new AskMe().answer(q.ask());? 以前只见过AskMe.answer(q.ask());.
================================
"匿名类是一种特殊的内部类,匿名类是不能有名称的类."
而这里的AskMe不是内部类,且在使用前已有定义.还是不明白.可否解释下?
AskMe.answer(q.ask());//因为你这个answer方法是static的,所以可以直接通过类名来调用
这2个不搞啊,怎么搞起来了。
应为static方法是在类初始化时也初始化了