第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

將變量設(shè)置回零

將變量設(shè)置回零

拉丁的傳說 2023-05-24 17:32:41
我正在使用亞馬遜上的一本電子書自學(xué) Java。我正在上一門對計(jì)算機(jī)進(jìn)行“基準(zhǔn)測試”的課程。它通過循環(huán)一分鐘并計(jì)算結(jié)果來完成此操作。在完成之前,它基本上不會在一分鐘內(nèi)向您顯示任何內(nèi)容。所以我做了一個(gè)小修改,每隔幾秒顯示一個(gè)點(diǎn)作為某種進(jìn)度條。通常這是一件微不足道的事情,但有些地方不對勁,我不知道是什么。發(fā)生的事情是 miniIndex 將達(dá)到我指定的閾值,并打印 miniIndex 的值和一個(gè)句點(diǎn)。然后應(yīng)該將 miniIndex 設(shè)置為零,以便計(jì)數(shù)器可以重新啟動。但它不會重置,也不會再增加。這是非常奇怪的行為。這是完整的代碼:class Benchmark {    public static void main(String[] arguments) {        long startTime = System.currentTimeMillis();        long endTime = startTime + 60000;        long index = 0;        // My inner index        int miniIndex = 0;        //        while (true) {            double x = Math.sqrt(index);            long now = System.currentTimeMillis();            if (now > endTime){                break;            }            index++;            // my modification            miniIndex++;            if (miniIndex >= 5000) {                System.out.print(miniIndex + ".");                miniIndex = 0;            }            // end of my modification        }        System.out.println(index + " loops in one minute.");    }}
查看完整描述

3 回答

?
搖曳的薔薇

TA貢獻(xiàn)1793條經(jīng)驗(yàn) 獲得超6個(gè)贊

我認(rèn)為您誤解了您的操作在做什么,因?yàn)樗皇窃谟?jì)算毫秒,而是在計(jì)算彼此不miniIndex++相等的循環(huán)迭代次數(shù)。根據(jù)您想要發(fā)生的情況, 我已經(jīng)修改了您的代碼以每 5 秒執(zhí)行一次語句:if


public static void main(String[] arguments) {


    long startTime = System.currentTimeMillis();

    long miniTime = startTime; //Declare miniTime equal to startTime

    long endTime = startTime + 60000;

    long index = 0;


    while (true) {

        double x = Math.sqrt(index);

        long now = System.currentTimeMillis();

        if (now > endTime){

            break;

        }

        index++;


        // my modification    

        //Current time minus last time the if executed and check if 5 seconds passed

        if ((now - miniTime) >= 5000) { 

            miniTime = System.currentTimeMillis();

            System.out.println("5 seconds have passed.");


            //if you want to print the actual time elapsed every 5 seconds use this print

            //System.out.println((now - startTime)/1000 + " seconds have passed.");

        }

        // end of my modification

    }

    System.out.println(index + " loops in one minute.");

}

請注意我現(xiàn)在如何比較當(dāng)前時(shí)間now并減去miniTime以檢查它是否大于或等于 5000 毫秒。要使用時(shí)間,您必須以某種方式將它與時(shí)間聯(lián)系起來,在這種情況下System.currentTimeMillis()以及結(jié)果。數(shù)字本身(例如循環(huán)計(jì)數(shù))永遠(yuǎn)不會是時(shí)間一致的。


一個(gè)循環(huán)可能執(zhí)行數(shù)百萬次,但只需要 3 秒。


示例輸出:


5 seconds have passed.

5 seconds have passed.

5 seconds have passed.

5 seconds have passed.

5 seconds have passed.

5 seconds have passed.

5 seconds have passed.

5 seconds have passed.

5 seconds have passed.

5 seconds have passed.

5 seconds have passed.

16319642816 loops in one minute.

注意: 5 seconds have passed.打印 11 次,因?yàn)樵?60 秒標(biāo)記時(shí)循環(huán)被打破,所以最后一次打印沒有打印。(11 * 5前 55 秒為 55)。


查看完整回答
反對 回復(fù) 2023-05-24
?
叮當(dāng)貓咪

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊

您的代碼運(yùn)行良好;是你的期望有缺陷。

您的代碼每 5,000 次迭代打印一個(gè)點(diǎn)。這基本上會產(chǎn)生價(jià)值。請記住,您的 CPU 每秒運(yùn)行超過 20 億次操作。您可能每秒可以執(zhí)行幾百萬次這樣的循環(huán)。稱其為每秒一百萬個(gè)循環(huán),除以 5000 就是每秒 200 個(gè)點(diǎn),或多或少。


查看完整回答
反對 回復(fù) 2023-05-24
?
倚天杖

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊

如果您仍然想在那種類型的輸出中使用它,您可以使用StringBuilder. 它的編碼是這樣的:


StringBuilder stringBuilder = new StringBuilder();

并包含這樣的循環(huán):


if (miniIndex >= 5000) {

    stringBuilder.append(miniIndex).append(".");

    miniIndex = 0;

}


if (stringBuilder.length() >= 200) {

    System.out.println(stringBuilder);

    stringBuilder.setLength(0);

}

http://img1.sycdn.imooc.com//646dd9fd0001464412610176.jpg

查看完整回答
反對 回復(fù) 2023-05-24
  • 3 回答
  • 0 關(guān)注
  • 232 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號