我想用Timer每秒动态显示 时间??编写程序后,却不能实现,大家帮忙解决一下?谢谢 代码如下:import java.util.Timer;
import java.util.TimerTask;
import java.util.Calendar;
public class MyTimer 
{
Timer timer;
MyTimer()
{
  timer = new Timer(); 
  timer.schedule(new TiTask(),1000);
}

class TiTask extends TimerTask
{
    Calendar ca = Calendar.getInstance();
    public void run()
    {
      System.out.println(ca.get(Calendar.YEAR)+"年"+ca.get(Calendar.MONTH)+"月"+ca.get(Calendar.DAY_OF_MONTH)+" "+ca.get(Calendar.HOUR_OF_DAY)+"时"+ca.get(Calendar.MINUTE)+"分"+ca.get(Calendar.SECOND)+"秒");
  System.exit(0);
    }
  }
 
 public static void main(String[] args)
 {
  MyTimer obj = new MyTimer();
 }
}

解决方案 »

  1.   

    用这个方法:
    public void schedule(TimerTask task,
                         Date firstTime,
                         long period)改了改:
    import java.io.*;
    import java.util.Timer;
    import java.util.TimerTask;
    import java.util.Calendar;public class MyTimer {
    Timer timer; MyTimer() {
    timer = new Timer();
    TimerTask tt = new TiTask();
    timer.schedule(tt, 1000, 2000);
    } class TiTask extends TimerTask {
    Calendar ca = Calendar.getInstance(); public void run() {
    System.out.println(ca.get(Calendar.YEAR) + "年"
    + ca.get(Calendar.MONTH) + "月"
    + ca.get(Calendar.DAY_OF_MONTH) + " "
    + ca.get(Calendar.HOUR_OF_DAY) + "时"
    + ca.get(Calendar.MINUTE) + "分" + ca.get(Calendar.SECOND)
    + "秒"); }
    } public static void main(String[] args) {
    MyTimer obj = new MyTimer();
    while (true) {// 这个是用来停止此任务的,否则就一直循环执行此任务了
    try {
    int ch = System.in.read();
    if (ch - 'c' == 0) {
    obj.timer.cancel();// 使用这个方法退出任务
    }
    if (ch - 'q' == 0) {
    System.exit(0);
    }
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
    }
      

  2.   

    import java.io.*;
    import java.util.Timer;
    import java.util.TimerTask;
    import java.util.Calendar; class MyTimer {
    Timer timer; MyTimer() {
    timer = new Timer();
    TimerTask tt = new TiTask();
    timer.schedule(tt, 1000, 1000);
    } class TiTask extends TimerTask { public void run() {
    Calendar ca = Calendar.getInstance();//将这个从上一行移动到这里 ,至于为什么你可以好好想想。考虑下程序是怎么编译执行的 System.out.println(ca.get(Calendar.YEAR) + "年"
    + ca.get(Calendar.MONTH) + "月"
    + ca.get(Calendar.DAY_OF_MONTH) + "日"
    + ca.get(Calendar.HOUR_OF_DAY) + "时"
    + ca.get(Calendar.MINUTE) + "分" + ca.get(Calendar.SECOND)
    + "秒"); }
    } public static void main(String[] args) {
    MyTimer obj = new MyTimer();
    while (true) {// 这个是用来停止此任务的,否则就一直循环执行此任务了
    try {
    int ch = System.in.read();
    System.out.println("dayin  "+ch);
    if (ch - 'c' == 0) {
    obj.timer.cancel();// 使用这个方法退出任务
    }
    if (ch - 'q' == 0) {
    System.exit(0);
    }
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
    }
      

  3.   

    感谢 lulu3779()和 zephyr_cc(),但是输出的结果是 时间一直一行一行的输入  
      如果  我想让 时间只在原地动态显示   就象 桌面状态栏旁的时间一样  谢谢继续帮小弟解决最后这个问题
      

  4.   

    只能在cmd下使用:import java.io.*;
    import java.util.Timer;
    import java.util.TimerTask;
    import java.util.Calendar;public class MyTimer {
    Timer timer; MyTimer() {
    timer = new Timer();
    TimerTask tt = new TiTask();
    timer.schedule(tt, 1000, 1000);
    } class TiTask extends TimerTask { public void run() {
    Calendar ca = Calendar.getInstance();
    System.out.print("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
    System.out.printf(("%4d" + "年"
    + "%2d" + "月"
    + "%2d" + " "
    + "%2d" + "时"
    + "%2d" + "分" + "%2d"
    + "秒"), ca.get(Calendar.YEAR), ca.get(Calendar.MONTH),
    ca.get(Calendar.DAY_OF_MONTH), ca.get(Calendar.HOUR_OF_DAY),
    ca.get(Calendar.MINUTE), ca.get(Calendar.SECOND));
    }
    } public static void main(String[] args) {
    MyTimer obj = new MyTimer();
    while (true) {// 这个是用来停止此任务的,否则就一直循环执行此任务了
    try {
    int ch = System.in.read();
    if (ch - 'c' == 0) {
    obj.timer.cancel();// 使用这个方法退出任务
    }
    if (ch - 'q' == 0) {
    System.exit(0);
    }
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
    }
      

  5.   

    达到你要求了
    原来加个转移字符就搞定了import java.io.*;
    import java.util.Timer;
    import java.util.TimerTask;
    import java.util.Calendar; class MyTimer {
    Timer timer; MyTimer() {
    timer = new Timer();
    TimerTask tt = new TiTask();
    timer.schedule(tt, 1000, 1000);
    } class TiTask extends TimerTask { public void run() {
    Calendar ca = Calendar.getInstance(); System.out.print(ca.get(Calendar.YEAR) + "年"
    + ca.get(Calendar.MONTH) + "月"
    + ca.get(Calendar.DAY_OF_MONTH) + "日"
    + ca.get(Calendar.HOUR_OF_DAY) + "时"
    + ca.get(Calendar.MINUTE) + "分" + ca.get(Calendar.SECOND)
    + "秒"+'\r'); }
    } public static void main(String[] args) {
    MyTimer obj = new MyTimer();
    while (true) {// 这个是用来停止此任务的,否则就一直循环执行此任务了
    try {
    int ch = System.in.read();
    System.out.println("dayin  "+ch);
    if (ch - 'c' == 0) {
    obj.timer.cancel();// 使用这个方法退出任务
    }
    if (ch - 'q' == 0) {
    System.exit(0);
    }
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
    }