我一直都会遇到这种错误:
错误:找不到合适的计划方法(足球,整数)
方法Timer.schedule(TimerTask,long)不适用
(参数不匹配;足球无法转换为TimerTask)
方法Timer.schedule(TimerTask,Date)不适用
(参数不匹配;足球无法转换为TimerTask)
import java.util.*;
public class Balls{
private static int time = 1;
public static void main(String[] args){
int a=0,b=0,c=0,d=0,e=0;
volley one = new volley();
beach two = new beach();
soccer three = new soccer();
basket four = new basket();
pokemon five = new pokemon();
Timer myTime1 = new Timer();
Timer myTime2 = new Timer();
Timer myTime3 = new Timer();
Timer myTime4 = new Timer();
Timer myTime5 = new Timer();
for(int x=0; x<20000; x+=5000){
if(x==5000){
myTime1.schedule(one,(x-1000));
myTime1.schedule(two,(x+500));
myTime1.schedule(three,(x-500));
myTime1.schedule(four,(x+1000));
myTime1.schedule(five,(x-500));
}
else if(x==10000){
myTime1.schedule(one,(x+500));
myTime1.schedule(two,(x-1000));
myTime1.schedule(three,(x+1000));
myTime1.schedule(four,(x-500));
myTime1.schedule(five,(x+500));
}
else if(x==15000){
myTime1.schedule(one,(x-500));
myTime1.schedule(two,(x+1000));
myTime1.schedule(three,(x+500));
myTime1.schedule(four,(x+500));
myTime1.schedule(five,(x+1000));
}
else if(x==20000){
myTime1.schedule(one,(x+1000));
myTime1.schedule(two,(x-500));
myTime1.schedule(three,(x-1000));
myTime1.schedule(four,(x-1000));
myTime1.schedule(five,(x-1000));
}
else{
break;
}
}
}
}
class volley extends TimerTask{
public void run(){
System.out.println("Volley ball");
}
}
class beach extends TimerTask{
public void run(){
System.out.println("Beach ball");
}
}
class soccer{
public void run(){
System.out.println("Soccer ball");
}
}
class basket{
public void run(){
System.out.println("Basket ball");
}
}
class pokemon{
public void run(){
System.out.println("Pokemon Ball");
}
}
抱歉发帖不好,第一次这样做。
答案 0 :(得分:1)
您正在创建soccer
类型的新对象
soccer three = new soccer();
然后你试图传递这个&#34;足球&#34;作为计时器计划功能的第一个参数
但schedule函数需要第一个参数为TimerTask
类型。
您需要做的是
让您的足球课程从TimerTask扩展
@Override
run()
函数。
TimerTask
类型的新对象(因为您的类扩展了TimerTask,请参阅下面的示例)例如:
class soccer extends TimerTask{
@Override
public void run(){
System.out.println("Soccer ball");
}
}
然后你只需要创建像这样的对象:
TimerTask three = new soccer();
从TimerTask扩展还可以为您提供cancel()
和scheduledExecutionTime()
功能
后者返回最近实际执行此任务的预定执行时间
cancel()
非常明显,它取消了计时器任务。
所以你可以打电话给例如:
three.cancel()
或
long execTime = three.scheduledExecutionTime()
答案 1 :(得分:1)
班级soccer
需要延长TimerTask
才能由Timer
安排,如下所示:
class soccer extends TimerTask {
@Override
public void run(){
System.out.println("Soccer ball");
}
}
同样适用于篮球和口袋妖怪课程。
实际上,您的代码无法编译,因为这些类不是TimerTask
的实例,您尝试在myTime1.schedule
中使用它们