成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

15 行 Java 代碼實(shí)現(xiàn)一個標(biāo)準(zhǔn)輸出的進(jìn)度條,其中的知識點(diǎn)你知道但并不一定會用

開發(fā) 前端
進(jìn)度條在我們?nèi)粘J褂玫能浖幸呀?jīng)很頻繁了,不過除了安裝軟件一般都是在網(wǎng)頁中看到,看到這個阿粉就想知道,那如何在標(biāo)準(zhǔn)輸出中實(shí)現(xiàn)一個進(jìn)度條呢?

最近阿粉在折騰一臺服務(wù)器,折騰的過程中往往會需要安裝很多依賴軟件,有的是在官網(wǎng)下載壓縮包,有的是通過系統(tǒng)命令直接安裝,在通過系統(tǒng)命令直接安裝的時候,就會有類似下面的進(jìn)度條出現(xiàn)。

進(jìn)度條在我們?nèi)粘J褂玫能浖幸呀?jīng)很頻繁了,不過除了安裝軟件一般都是在網(wǎng)頁中看到,看到這個阿粉就想知道,那如何在標(biāo)準(zhǔn)輸出中實(shí)現(xiàn)一個進(jìn)度條呢?

光有想法是不行,接下來我們就開始實(shí)踐一下,通過 Java 代碼在標(biāo)準(zhǔn)輸出中實(shí)現(xiàn)一個類似的進(jìn)度條。

首先我們看到一個進(jìn)度條是從 0 加載到 100 的一個過程,實(shí)現(xiàn)進(jìn)度條我們需要一個最終的狀態(tài),然后逐漸從無到有變化形成,所以我們要有一個百分比顯示,其次我們要有兩種不一樣的樣式變化。我們可以通過先展示一種符合為百分百,然后不斷通過替換新的符合,產(chǎn)生一種變化的效果,這里我們采用下面這兩種符號來表示:

char incomplete = '?'; // U+2591 Unicode Character 表示還沒有完成的部分
char complete = '█'; // U+2588 Unicode Character 表示已經(jīng)完成的部分

通過用完成的符號不斷地替換未完成的符號,形成一種不斷在進(jìn)行的效果。

接下來我們實(shí)現(xiàn)一個靜態(tài)方法,首先通過Stream.generate(),我們創(chuàng)建未完成的部分,這里用 StringBuilder 來創(chuàng)建字符串對象,通過 append 方式來填充,形式如下 Stream.generate(() -> incomplete).limit(total).forEach(builder::append);這里 total 我們設(shè)置成 100,限制一下長度。

再通過一個 for 循環(huán)來不斷的替換未完成中的部分,將字符挨個替換為完成的字符,builder.replace(i, i + 1, String.valueOf(complete))。

這里有三個需要需要的地方:

  • 進(jìn)度條始終展示在一行,并沒有換號,所以我們要用System.out.print() 方法輸出,不能用 System.out.println(); 方法來輸出;
  • 如果我們直接通過System.out.print(); 輸出的話,會發(fā)現(xiàn)雖然在同一行出現(xiàn),但是會越來越長,如下所示,每次循環(huán)的字符串會接在后面,這樣是不行的。所以這里我們需要使用到回車符號,大家都知道\r\n,用來回車和換行,其實(shí)這種兩個符號\r 是回車,\n 是換行。回車是將光標(biāo)移動到行首,換行則是將光標(biāo)移動的下一行;

進(jìn)度條會根據(jù)網(wǎng)絡(luò)和資源包大小下載的時候慢慢變化的,所以我們要有一定的速度,不能一下子就完成了,這里我們可以簡單通過 Thread.sleep() 來實(shí)現(xiàn);

所以在代碼修改成如下所示,這里為了表示越到后面越慢的場景,我們這邊的 sleep 不是一個固定的數(shù)值。

for (int i = 0; i < total; i++) {
builder.replace(i, i + 1, String.valueOf(complete));
String progressBar = "\r" + builder;
String percent = " " + (i + 1) + "%";
System.out.print(progressBar + percent);
try {
Thread.sleep(i * 5L);
} catch (InterruptedException ignored) {

}
}

至此一個基于 Java 標(biāo)準(zhǔn)輸出的進(jìn)度條我們就實(shí)現(xiàn)了,只要思考情況,實(shí)現(xiàn)起來還是很簡單的,只是其中有幾個知識點(diǎn)知道就行了。重點(diǎn)就是要知道如何實(shí)現(xiàn)將光標(biāo)移動的行首,可能符號都認(rèn)識,只是平時沒想到還可以這樣使用。

責(zé)任編輯:武曉燕 來源: Java極客技術(shù)
相關(guān)推薦

2021-11-16 07:31:59

JavaJDK 7 String

2018-05-15 16:01:53

對象內(nèi)存JVM

2018-01-18 05:20:59

2022-08-15 13:59:10

XaaS云計(jì)算

2010-11-17 11:11:44

跳槽

2015-08-21 09:18:17

大數(shù)據(jù)技術(shù)解決問題

2024-03-21 17:29:45

2021-02-26 09:04:22

數(shù)組ArrayListHashMap

2016-05-30 13:42:03

數(shù)據(jù)中心能耗散熱

2021-05-07 20:08:52

人工智能AI游戲

2021-11-01 07:27:25

開發(fā)Java泛化

2021-05-08 16:33:14

人工智能游戲機(jī)器學(xué)習(xí)

2021-02-25 15:19:04

文件App蘋果功能

2023-12-07 19:55:00

2020-01-03 10:11:01

數(shù)據(jù)庫安全SQL

2018-02-08 09:11:25

Linux命令rm

2016-11-28 11:19:48

術(shù)語神秘

2018-01-24 10:22:56

2022-12-26 09:16:45

Guava架構(gòu)模型

2020-10-26 10:33:06

Vue進(jìn)度條前端
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 免费黄色的视频 | 亚洲不卡在线观看 | 日本三级电影在线观看视频 | 五月婷亚洲 | 国产免费看 | 成人一区精品 | 午夜国产精品视频 | 91精品国产乱码久久久久久久久 | 超碰成人免费观看 | 日本欧美黄色片 | 亚洲顶级毛片 | 国产欧美一区二区三区久久 | 国产黄色在线观看 | 国产一区二区毛片 | 欧美另类视频在线 | 久久久久久91香蕉国产 | 日本黄视频在线观看 | 91麻豆精品一区二区三区 | 黑人精品欧美一区二区蜜桃 | 伊人导航 | 免费看a| 毛片一区二区 | 99久久久久久久久 | 国产精品乱码一二三区的特点 | 欧美高清性xxxxhdvideosex | 天天操伊人 | 欧美一区二区三区大片 | 自拍偷拍视频网 | 日韩h | 亚洲一区视频在线 | 中文字幕日韩三级 | 毛片一级片 | 中文字幕视频在线观看 | 国产精品日本一区二区在线播放 | 日韩免费视频一区二区 | 亚洲视频网 | 成人在线免费观看av | 国产精品1区2区3区 一区中文字幕 | 999久久久久久久久6666 | 亚洲图片视频一区 | 午夜成人在线视频 |