黑马程序员技术交流社区

标题: 请问,动态变化的百分数应该如何实现? [打印本页]

作者: 大西洋    时间: 2015-5-10 09:22
标题: 请问,动态变化的百分数应该如何实现?
比如,:1% 动态变化到100%
不是用for循环一行一行打印哦,而是从数字1,动态的变化为100,后面跟一个百分号 %;
请问这个用Java应该如何实现呢?谢谢!



作者: pvbj0314    时间: 2015-5-10 09:22
大西洋 发表于 2015-5-10 19:14
这位兄台,您是学C语言的么? 我试了一下;
System.out.printf("%04d\r",count++); // 在Eclipse中会报错 ...

不是C,是‘%4d’不是%04d,答之前试过了,Java SE 1.8是可以的,但要在doc控制台下运行,不要用Eclipse,在Eclipse中,就会是换行的了。
作者: Rdxer    时间: 2015-5-10 11:13
打印之后清空原来的,就行了,控制台只有输出没有修改,,

作者: 陈锐涛    时间: 2015-5-10 12:36
等待大神 回复正确答案~{:2_30:}
作者: pvbj0314    时间: 2015-5-10 19:00
可以使用System.out.printf("%4d\r",count++)打印你要的信息,这条语句中“\r"表示回车,即回到该行开始位置,每次打印都会覆盖原先的输出。"%4d",表示这有一个十进制整数,占4个位置。“%%”指百分号。打印语句之间要添加时间间隔,可以用一个变量循环计数实现,虽然没有实际意义,但可以验证答案。
作者: 大西洋    时间: 2015-5-10 19:08
Rdxer 发表于 2015-5-10 11:13
打印之后清空原来的,就行了,控制台只有输出没有修改,,

请问如何清空??谢谢。
作者: 大西洋    时间: 2015-5-10 19:14
本帖最后由 大西洋 于 2015-5-10 19:15 编辑
pvbj0314 发表于 2015-5-10 19:00
可以使用System.out.printf("%4d\r",count++)打印你要的信息,这条语句中“\r"表示回车,即回到该行开始位 ...

这位兄台,您是学C语言的么? 我试了一下;
System.out.printf("%04d\r",count++); // 在Eclipse中会报错,要改为System.out.println("%04d\r"+count++);

输出结果是这样:
0
%04d
0
%04d
1
%04d
2
%04d
3
。。。依然是一行一行输出。。。没有覆盖前一个数字
作者: 只想好好的    时间: 2015-5-11 09:53
这个在Eclipse里面用代码清空控制台是没有的(至今我没发现,以前我也要用到过),只用手动点击控制台的clear按钮才可以,如果你一定要看到动态变化,你可以在输出的那一行加上断点,调试下就能看到他的变化了
作者: Rdxer    时间: 2015-5-11 17:52
大西洋 发表于 2015-5-10 19:08
请问如何清空??谢谢。

帮你百度了下,没找到,,,  命令控制台下可以,,,  Eclipse 没试过,,不用太介意这个,控制台就是给看的  
作者: 大西洋    时间: 2015-5-11 20:33
pvbj0314 发表于 2015-5-11 19:27
不是C,是‘%4d’不是%04d,答之前试过了,Java SE 1.8是可以的,但要在doc控制台下运行,不要用Eclipse ...

感谢回答!我自己也试了一下,用 \b 也可以实现,Eclipse有bug,不支持 \b...
作者: QQheima    时间: 2015-5-14 14:02
class C{
        /*
                练习使用运算符
        */
        public static void main(String[] args){
                System.out.print("正在安装:...");
                delay(1000l);
               
                for(int i = 0; i < 100; i++){

                        if(i<10)
                                System.out.print("\b\b\b0"+i+"%");
                        else
                                System.out.print("\b\b\b"+i+"%");

                        delay(150l);
                }
                System.out.println("\b\b\b100%");
                System.out.println("安装完成!");
        }

        private static void delay(Long l){
                try{
                        Thread.sleep(l);//按照指定毫秒数延时执行。
                }catch(Exception e){
                        System.out.print("延时出现异常!");
                }               
        }
}
作者: 大西洋    时间: 2015-5-14 15:49
QQheima 发表于 2015-5-14 14:02
class C{
        /*
                练习使用运算符

感谢回答,\b 在 eclipse中无法被失败,在cmd命令行中是可以的;这是Eclipse久远以来没解决的bug。。。

作者: zhuchangbao    时间: 2015-5-20 13:36
请尽快选择最佳答案。谢谢。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2