这个程序就是运行不料。真着急。。大家帮帮我。。

03-06-09 cute
总是说静态的。。 我都没办法了。。。加了静态标识也不行。。

这个程序改怎么样运行?

---------------------------------

import java.util.*;
import java.text.*;
import java.awt.Toolkit;
class c
{
 Toolkit toolkit;
 Timer timer;

	public void  annoyingBeep(){

		toolkit=Toolkit.getDefaultToolkit();
		timer=new Timer();
		timer.schedule(new RemindTask(),0,1*1000);

	}



class  RemindTask extends TimerTask{

	int numWarningBeeps=3;

		public void run(){

			if(numWarningBeeps>0){

				toolkit.beep();
				System.out.println("Beep!");
				numWarningBeeps--;

			}else{

				toolkit.beep();
				System.out.println("Time's up!");
				System.exit(0);

			}
		}

	}

public static void main(String args[]){



annoyingBeep();



}
}

Jevang
2003-06-09 23:18
I did not see static keyword before annoybeeping() ???

xxmouse
2003-06-10 09:12
照着我这个改就行了, 好好理解一下静态方法吧, 否则总是会出问题

public static void main(String args[]){

c cc = new c();

cc.annoyingBeep();

//annoyingBeep();

}

cute
2003-06-10 09:16
但是我加上了static 这个函数前面加上了Keyword 。他会提示说:

内部匿名类,无法执行:

无法调用不是静态的。。

没办法,我只好再这个内部类当中 函数前面 加上 static 。

---------

c.java:13: non-static variable this cannot be referenced from a static context

timer.schedule(new RemindTask(),0,1*1000);

xxmouse
2003-06-10 14:11
我不太明白, 你把源码再贴一遍

cute
2003-06-10 18:20

import java.util.*;
import java.text.*;
import java.awt.Toolkit;
class c
{
static Toolkit toolkit;
static  Timer timer;

	public static void  annoyingBeep(){

		toolkit=Toolkit.getDefaultToolkit();
		timer=new Timer();
		timer.schedule(new RemindTask(),0,1*1000);

	}



class  RemindTask extends TimerTask{

	int numWarningBeeps=3;

		public void run(){

			if(numWarningBeeps>0){

				toolkit.beep();
				System.out.println("Beep!");
				numWarningBeeps--;

			}else{

				toolkit.beep();
				System.out.println("Time's up!");
				System.exit(0);

			}
		}

	}

public static void main(String args[]){



annoyingBeep();



}
}

xxmouse
2003-06-10 18:36
这是我根据你第一次的帖子改的, 你先看看, 你刚发的那个我正在看。

import java.util.*;

import java.text.*;

import java.awt.Toolkit;

class c

{

Toolkit toolkit;

Timer timer;

public void annoyingBeep(){

toolkit=Toolkit.getDefaultToolkit();

timer=new Timer();

timer.schedule(new RemindTask(),0,1*1000);

}

class RemindTask extends TimerTask{

int numWarningBeeps=3;

public void run(){

if(numWarningBeeps>0){

toolkit.beep();

System.out.println("Beep!");

numWarningBeeps--;

}else{

toolkit.beep();

System.out.println("Time's up!");

System.exit(0);

}

}

}

public static void main(String args[]){

c cc = new c();

cc.annoyingBeep();

//annoyingBeep();

}

}

cute
2003-06-10 19:25
谢谢。。你这个程序可以运行。

可是为什么我不能直接运行这个函数呢?非的要创建对象?

为什么创建对象后。就不需要关键子STATIC??

//annoyingBeep();

xxmouse
2003-06-11 08:58
这就是为什么我说应该好好理解STATIC方法,

你的main方法是静态的,(这是必须的, public static void main, 这四个东西必须同时出现, 否则没办法运行程序。)它不能调用非静态方法, 所以必须要先取得对象实例, 再使用方法。

cute
2003-06-11 10:08
哦。今后一定努力。感谢大侠指导!

猜你喜欢