想模拟一个显示进度的程序public static void main(String[] args)
{
for (int i = 1; i <= 100; i++)
{
try
{
System.out.println(i + "%");
Thread.sleep(1000);
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
}目前的效果是这样的:1%
2%
3%
4%能不能用一个方法清空当前的输出,然后在同一行重新打印?

解决方案 »

  1.   

    C 里面弄过 java不知道
      

  2.   

    java本身做不到的吧,同求高手解答
      

  3.   

    Java控制台程序如何在用户关闭时执行清理代码 
    通过
    Runtime.getRuntime().addShutdownHook(Thread hook)
    方法可以给当前的进程注册一个清理线程,当进程退出的时候,会执行线程中的代码。1、为了统一清理线程的实现,可以做一个Destroyable接口,实现此接口的类都有一个destroy()方法,里面包含了该类的清理过程,例如关闭数据库连接、关闭Socket连接等。
    Destroyable接口的代码:
     1 package net.blogjava.amplifier;
     2 
     3 /**
     4  * 建立此接口的目的是为了实现程序退出时的清理
     5  * 在Java控制台程序中,用户可以通过关闭命令行窗口或按下Ctrl+C来结束程序的运行
     6  * 这时候应该保证资源能够被正确释放,例如数据库的连接、Socket的连接应该关闭
     7  * 实现了本接口的类的实例引用可以由一个ShutdownHook线程来操作
     8  * 此线程在虚拟机退出时执行,详见Runtime.addShutdownHook()方法
     9  * @author amplifier
    10  *
    11  */
    12 public interface Destroyable {
    13     /**
    14      * 实现本接口的类需要实现此方法,方法中包含该类的清理代码,
    15      * 例如关闭数据库连接、关闭Socket连接等
    16      *
    17      */
    18     void destroy();
    19 }
    2、建立一个继承于Thread的类ShutdownHook,里面的一个域是Destroyable实现类的引用,在该类的构造函数中可以传入该Destroyable实现类。
    ShutdownHook的代码:
     1 package net.blogjava.amplifier;
     2 
     3 public class ShutdownHook extends Thread {
     4 
     5     private Destroyable desObj;
     6     
     7     public ShutdownHook(Destroyable desObj){
     8         this.desObj = desObj;
     9             }
    10     
    11     @Override
    12     public void run() {
    13         if(this.desObj!=null){
    14             try{
    15                 this.desObj.destroy();
    16             }
    17             catch (Exception e) {
    18             }
    19         }
    20     }
    21 
    22     /** *//**
    23      * @param args
    24      */
    25     public static void main(String[] args) {
    26     
    27 
    28     }
    29 
    30 }
    3、在main()方法中注册ShutdownHook。
     1     public static void main(String[] args){
     2         DestroyableImpl di = new DestroyableImpl();
     3         ShutdownHook sh = new ShutdownHook(di);
     4         Runtime.getRuntime().addShutdownHook(sh);
     5         Runtime.getRuntime().addShutdownHook(new Thread(){
     6             public void run(){
     7                 System.out.println("正在退出……");
     8             }
     9         });
    10         di.otherMethod();
    11     }
      

  4.   

    用外部命令: 
    Runtime.getRuntime.exec(cmd);
      

  5.   

    刚才在控制台下运行了一下,发现用“\r”是可以的,看来是myeclipse的问题,代码如下:public class TestProgress
    {
    public static void main(String[] args)
        {
            for (int i = 1; i <= 100; i++)
            {
                try
                {
                    System.out.print(i + "%\r");
                    Thread.sleep(1000);
                } catch (InterruptedException e)
                {
                    e.printStackTrace();
                }
            }
        }
    }